-
Здраствуйте!!!
Ситуация такая:
Год назад я (как дизайнер) и мой знакомый (как программист) сделали сайт кинотеатра-диско-клуба [Only registered and activated users can see links. Click Here To Register...] . Денег не платили, просто голый энтузиазм. Обновлять сайт приходиться мне. Очень не удобно, приходится залазить в код и вручную править ссылки. Вся структура сайта основываеться на записи в текстовые файлы. Он был взломан, форум постоянно засоряют рекламой [Only registered and activated users can see links. Click Here To Register...] Сайт необходимо переделать!!! Программист - пропал...
Я вооружился книжой по php и mysql, почитал, немного вникнул, но для создания проекта нехватае ни знаний, ни опыта, ни уверенности. :blush2:
Помогите советами и ответами на возникшие вопросы, пожалуйста!!!
Первым делом хочу сделать раздел о Кинотетре.
Задача: 1. Сделать шаблон страници и подгружать в него новые значения (т.е. уменьшить время загрузки страниц)
2. архив, фильм и анонс дожны генерировться автоматически в зависимости от даты.
Вот така схема пришла мне в голову:
-
1. я беру с сервера дату, например 15.09.05, перевожу ее в число типа 0915, и вставляю ее в разные функции которые ее сравнивают со значениями "а" и "в" и выводят требуемый результат.
"а" и "в" - это преобразованные даты начала и конца показа фильма, например 0913 и 0920. (эти числа я сам ввожу в базу данных).
теперь вопосы:
1. что значит "...имеет смысл помещать включаемые файлы в каталог, который доступен сценарию, но не позволяет проводить самостоятельную загрузку включаемых файлов через веб-сервер..." - где взять этот каталог???
2. к каждому фильму прикручены коментарии - правильная-ли база днных на моем рисунке.
3. На хосте предоставляют только одну базу данных, это значит что форум придеться вообще удалять, или его можно помещать в отдельную таблицу?
надеюсь на понятные ответы, потомучто 2 недели назад я впервые прочетал об операторе echo и т.д. [Only registered and activated users can see links. Click Here To Register...]
-
1. права доступа к директории - 600 (только владелец имеет право обращаться к содержимому), "внешний" (общедоступный сценарий вне директории) может включать (include/require) файлы, хранящиеся в директории ...
2. (рисунок не смотрел) я бы поступил так: если сделать поля нумеруемыми (первой ячейкой, например - id bigint auto_increment primary key), каждый новый пункт будет иметь id, равный порядковому номеру, если пользователь оставляет комментарий на конкретное сообщение в таблице комментов сохраняется id сообщения к которому он относится и его содержание, при чтении делается выборка по id (выбрать все данные из таблицы комментов, где id такой же как у сообщения и вывести) очень просто
3. если форум требует целую базу, дайте [Only registered and activated users can see links. Click Here To Register...] (после инсталляции форума можно дополнить базу таблицами, которые никогда не перекроются с таблицами форума [специальные имена] ... используйте)
-
Человек просил простые ответы. Давай по порядку :
Сайт был взломан через форум phpBB. Для начала обновите его, хотя я вижу это уже сделано или нет. Если нет, то советую попасть на [Only registered and activated users can see links. Click Here To Register...] и заняться апдейтом форума.
Теперь немного теории по-простому.
База данных - хранит в себе таблицы. Их может быть много в одной базе данных. Форум можно не сносить, хуже не будет. Форум использует не одну, а много таблиц (это к сведенью)
Что касается решения вашего вопроса. Я не могу советовать, как лучше. Если хотите использовать базу данных, то тогда придется писать админку, а иначе это будет мартышкин труд.
Если же всеже хотите на файлах, то тут несколько примеров :
отмечу, это без использования mysql базой, решения на файлах.
Код:
$include_file=$total.".html";
$include_dir="files/";
$rezult=$include_dir.$include_file;
if(@file_exists($rezult)) {
include ($rezult);
}
else {
include ($include_dir."default.html";
}
Пример использования script.php?total=film1
Итак как это работает :
скрипту передается переменная total которая равна film1
Теперь по строкам кода
переменная $include_file равна "film1.html"
переменная $include_dir равна "files/"
переменная $rezult равна "files/film1.html"
( Понятно, что это как раз местоположение файла, относительно скрипта)
далле проверяем, а сущетствует ли такой файл ?
если да, то вставляем файл film1.html из каталога files
если нет, то вставляем файл default.html из каталога files
Проверки нужны, чтобы нельзя было сделать вот так
script.php?total=http://www.мой сайт.ru/злой скрипт.php
тогда бы мой скрипт заработал бы на твоем сайте. А так файла нет, вставляется default.html
Давайте попробуем вставить данные о фильмах :
Для начала создадим текстовый файл вот такого содержания (шаблон):
Название фильма 1|Дата начала|Дата окончания|Файл описания
Пример файл films.txt :
"9 Рота"|16.10.05|19.10.05|9_rota
"DOOM"|14.10.05|18.10.05|doom
Программа, которая будет подключать файлы :
Код:
$data=file("films.txt"); // считали файл
$now=time(); // сегодня время
// перебираем теперь фильмы
for ($i=0;$i<count($data);$i++){
list($name_film,$data_start,$data_end,$include_file)=$data[$i];
list($s_day,$s_month,$s_year)=split('\.',$data_start);
list($f_day,$f_month,$f_year)=split('\.',$data_end);
$time_s=mktime(0,0,1,$s_month,$s_day,$s_year);
$time_f=mktime(23,59,59,$f_month,$f_day,$f_year);
if (($now>$time_s)&&($now<$time_f)){
echo "<a href=script.php?total=".$include_file.">".$name_film."</a>
";
}
}
Смысл такой. Перебираем файл films.txt и если попадаем в промежуток. то выводим название фильма, как ссылку.
Ну вот пара небольших советов. Изучай, читай работай ...
-
Спасибо за предоставленный пример, полезная информация.
Делать хочу с базами данных по 2-м причинам.
1. Научиться работать с базами.
2. Написать админку и научить секретаршу добавлять фильмы.
Другими словами, сять с себя администрирование :closedeyes:
Вопрос: у меня на хосте 2 катлога, www и log, файлы для функции require (), помещаются в новую папку с правами 600??? а сама папка находится в www или выше???
Какие должны быть права у папки с сайтом (www)?
Какие дожны быть права у папки с картинками фильмов, если эти картинки загржаются пользователями при помощи пхп, а в базу заноситься только src-ссылка. в книге написано что для безопасности сама папка должна находиться вне корневого каталлога. Т.е. выше www???
-
Значит так. Каталог www там лежат все файлы сайта. Выше нет смысла класть. И вообще, если Вы ни бум бум в этом во всем ... то советую правами не заморачиваться, тем более Вам врядли это понадобится в ближайшее время.
-
Я не совсем не бум бум!!!
Есть книжка, есть мозг, есть желание!!! вот только спрашивать неукого!!!
Вначале всегда тяжело.
Вот еще назрел вопрос: :dance2:
на странице "афиша" где описание фильма будеть 1 большая картинка фильма. А на страницах анонс и архив будут много маленьких. как лучше сделать написать скрипт который при загрузке на сервер делать 2 картинки (большую и маленькую) и сувать их в разнае котологи, или сделать один каталог с картинками и ресайзить их при вызове страници разными скриптами???
И правами заморачиваться уже нужно [Only registered and activated users can see links. Click Here To Register...]
-
Проще наверно сделать маленькую и большую или что значит "ресайзить разными скриптами" ?
-
Проще с thumbnails (ресайзить).
Но генератор лучше делать на perl, GD работает быстрее (проверено).
-
Ну вот... [Only registered and activated users can see links. Click Here To Register...] Мнения разделились... [Only registered and activated users can see links. Click Here To Register...]
"Ресайзить" - это изменение размеров загружаемых картинок при помощи скриптов. в моем лучае 1 скрипт делает 2 кртинки.
На данный момент сделал страничку администрирования для загрузки фильмов в базу и страницу просмотра идущего фильма.
На локальном хосте все работает, только я преставления не имею как базу на другой хостинг перебросить. Вообще как она выглядит??? Это какойто файл??? Или с ней только через cmd можно общаться???
Как поступить с каталогом для картинок если в него можно загружать файлы всем, чтобы было безопаснее???
-
Ликбез. Чтобы работать локально с удобством поставь себе Денвер
denwer.ru
Для переброски базы на сайт используй либо phpmyadmin (найдешь его в Денвере или скачаешь отдельно), либо через шелл (ssh доступ к сайту с помощью команды mysql).
По поводу базы. Немножко теории на примере двух таблиц.
таблица films
id - номер фильма (поле неотрицательное челое число. проставляется автоматчески при добавлении нового - так называемый автоинкремент)
filmname- имя фильма
таблица kinoteatri
id - - номер кинтеатра (поле неотрицательное челое число. проставляется автоматчески при добавлении нового - так называемый автоинкремент)
kinoteatrname
тепер repertuar
id
film_id
kinoteatr_id
data_start
data_end
time
думаю поля понятны. (номер, фильм id, кинотеатр id, дата начала, дата конца-советую даты хранить как целое число. почитай про timestamp, и собственно время начало сеансов)
почитай про понятие третьей нормальной формы, отношение многие ко многим, один ко многим и т.д.
Будут многие говорить что не идеально - бога ради. Есть простой ответ -kinoafisha.net это делал я:)
-
Цитата:
Originally posted by Rom@Nov 18 2005, 08:30
Как поступить с каталогом для картинок если в него можно загружать файлы всем, чтобы было безопаснее???
<div align='right'>[Only registered and activated users can see links. Click Here To Register...]
[/quote]
гм-гм...
это мания преследования [Only registered and activated users can see links. Click Here To Register...]
за принятие файла отвечает серверный сценарий (если вы его поставили), в начале сценария поставить проверку логина и пароля (они правильные - идет выполнение сценария, нет - "аварийное завершение", т.е. файл не закачивается).
-
Странно, делаю вывод архива. Функция выводит количество выбранных строк, если беру 1 фильм тоже все ок. А вот когда пытаюсь вывести содержиме строк попорядку она не работает :suicide2:
Подскажите где ошибка
//вывод архива
function display_arhiv ()
{
$date = date('md');
$den = (integer)$date;
$conn = db_connect ();
if (!$conn)
{
echo 'базу не найду';
exit;
}
mysql_select_db('planeta');
$result = mysql_query ("select * from films where ar > '$den'");
$num = mysql_num_rows($result);
echo $num ;
for ( $i=0; $i < $num; $i=++)
{
$row = mysql_fetch_array ($result);
echo '
';
echo stripslashes ($row['ar', 'an', 'name']);
}
}
присоединяюсь к базе так
//присоединение к базе данных
function db_connect()
{
$result = mysql_pconnect ('localhost', 'root', '1');
return $result;
}
Про имя и пароль подкалывать не надо, сам знаю!!! Потом изменю!!! [Only registered and activated users can see links. Click Here To Register...]k:
-
Сам нашел!!!
через while работает :biggrin2: