Ваш первый Сайт С использованием РНР-скриптов

СОЗДАНИЕ ГОСТЕВОЙ КНИГИ

Гостевая книга будет состоять из трех файлов, а именно, текстового фай­ла CSVfile.txt. В нем в табличном виде будут храниться данные от посетите­лей и их сообщения, а также ваши ответы на эти сообщения. Если файл CSVfile.txt у вас уже есть в папке gostevaja, то удалите его, так как он потом создастся сам. Потом мы создадим файл gostevl.php. Это будет «лицевая» страница нашей гостевой книги (рис. 7.1). На ней будут находиться послед­ние 3 записи посетителей (можно сделать и больше) и ваши ответы на них. На данный момент на рис. 7.1 находятся пока только одна запись и ответ на него. Чуть выше записи выводятся данные от посетителя: имя, ссылки на E-mail и сайт посетителя. Указываются также дата и время поступления записи. Слева вверху находится кнопка «Добавить новую запись», при нажа­тии на которую посетитель попадает на страницу gostev.php.

СОЗДАНИЕ ГОСТЕВОЙ КНИГИ

Td Поздравляю с первой записью

Рис. 7.1

Третий файл gostev.php будет представлять собой программу с формой для ввода данных от посетителей, обработки и записи этих данных в тексто­вый файл CSVfile.txt (рис. 7.2).

Д^^ЛШйС ШГЖЩ

СОЗДАНИЕ ГОСТЕВОЙ КНИГИ

Рис. 7.2

Посетитель заполняет текстовые поля и нажимает на кнопку «Добавить запись». Если текстовая область для сообщения не будет пустой, данные от посетителя обработаются и запишутся в текстовый файл, а сам посетитель сможет опять возвратиться на главную страницу гостевой книги gostevl.php И увидеть свою запись.

Приступим к написанию кода. Сначала мы напишем код для страницы ввода новых записей gostev.php (см. рис. 7.2). В РНРтредакторе создайте но­вый файл, сохраните его в папке gostevaja под названием gostev.php. Код представлен в листинге 7.3. Желательно сначала разобраться в этом коде (разбор строк кода после листинга), а потом самостоятельно набрать его.

Листинг 73 (файл Gostev.Php) <Html> <Head>

<title>HoBaH Запись</Ш1Е>

<link type="text/css" rel=" stylesheet" href="stil. css">

</head>

<body>

<centerxb id^'10103'^Добавление 3aniicii</bx/center> <?php

$csv=" CSVfile. txt";

If(!$_POST['add'l)

{

Echo "<form action=gostev. php method=POST> <Ь>Ваше Имя: </bxinput type=text size=25 name=imja><br> <Ь>Ваш E-mail: </bxinput type=text size=45 name=email><br> <b>URL Вашего Сайта: </bxinput type=text size=45 name=urlxbr> <Ь>Новая Запись:</bxbr>

<textarea name=text rows=6 cols=70x/textareaxbr> <input type=submit name=add value=fДобавить Запись'> <input type=reset name=reset Уа1Ие=?Отмена'>

</form>"; }

Else

{

If(!$_POST['text'])

{

Exit; }

$imja=$_POST[fimja'l; $email=$_POST['emairi; $url=$_POST['uiT]; $text=$_POST [' text' ]; $data=date("d. m.Y H:i:s");

$strok=" r.strip_tags($imja).,,r.$data.,,l,,.strip_tags($email).Mr.strip_tags($url).Mr.

Strip_tags($text);

$strok=$strok. chr(13).chr(10);

$open=fopen($csv, "a");

Fwrite($open,$strok);

Fclose($open);

Echo "<a href=,gostevl. php,>BepHyTbCH</a>";

}

?>

</body> </html>

Разберем строчки этого кода: <html> <head>

<title>Hoean 3anucb</title> - оглавление страницы;

<link type= "text/ess" rel-"'stylesheet" href="stil.css"> - делаем указание об ис­пользовании таблицы стилей stil.css в данной папке. Кстати, этого файла, в котором задаются типы и цвета шрифтов, в папке gostevaja еще нет. Поэто­му скопируйте его из главной папки htdocs, где мы его создавали раньше, в папку, где будут находиться все файлы гостевой книги, т. е. в папку goste­vaja. Правда, можно и не копировать таблицу стилей, а просто указать на нее, изменив ссылку href="stil.css" на href="../stil.css". То есть указать на каталог, который выше каталога gostevaja, в нашем случае каталог htdocs, где и нахо­дится файл стилей stil.css. </head> <body>

<center><b id="lolo3">Добавление 3anucu</b></center> - вводим надпись вверху этой страницы. Тип и цвет шрифта задается идентификатором 1о1оЗ, который имеется у меня в таблице стилей stil.css. Например, у меня там есть такая запись: #lolo3{font-size:18pt; color:Ш)00066; font-family:Comic Sans MS} <?php - начало РНР-кода;

$csv= "CSVfile.txt"; - присваиваем переменной $csv название текстового фай­ла для записи данных от посетителей;

If(!$_POST['add']) - в элементе суперглобального массива $_POST['add'] Должны находиться переданные из формы данные от элемента этой формы с именем add. Форма выводится чуть ниже в следующих строках кода. Имя Name=add имеет кнопка «Добавить запись». Элемент массива $_POST['add'J Будет определен только тогда, когда кнопка будет нажата. Поскольку в усло­вии стоит восклицательный знак (символ отрицания), то оно будет истинным, если кнопка <Добавить запись» еще не нажата. Как только мы зайдем на данную страницу, данное условие будет пока истинно и в браузер выве­дется форма для ввода данных, как на рис. 7.2.

Ц

Echo "<form Ас tion= gostev.php method=POST> - делаем форму для ввода дан­ных, которые после нажатия кнопки «Добавить запись» передадутся мето­дом POST На эту же страницу gostev.php; <Ь>Ваше имя: </b><input type=text size=25 name=imja><br> <Ь>Ваш E-mail: </b><input type=text size=45 name=email><br>

<b>URL Вашего сайта: </b><input type=text size=45 name=url><br> - да­лее следуют 3 текстовых поля, разделенные строкой, для ввода имени посе­тителя, его электронного адреса и названия его сайта. По программе эти поля заполнять необязательно; <Ь>Новая запись:</b><br>

<textarea name=text rows=6 cols=70></textarea><br> - далее следует тек­стовая область для ввода сообщения от посетителя. Эта область не должна быть пустой, иначе, как будет показано ниже в этой программе, данные в текстовый файл записываться не будут;

<input type=submit name=add value=Добавить запись'> - кнопка для отправ­ки введенных посетителем данных и его сообщения программе-обработчику (в данном случае этой же программе gostev.php);

<Input Type=Reset Name=Reset Value='OmMeHa'> - кнопка для отмены введен­ных данных. Все текстовые поля и области очищаются;

</form> ";

1} - конец блока команд, выполняющегося, когда кнопка «Добавить запись» Еще не нажата;

Else - если кнопка уже нажата, т. е. посетитель отправил свои данные и со­общение, то выполнится весь блок команд в фигурных скобках под номе­ром 2;

Строганов А. С. Ваш первый сайт с использованием РНР-скриптов {2

If(!$_POST['text']) - далее проверяется условие, переданы ли данные из тек­стовой области формы с именем name=text. Если данных нет, т. е. посетитель не ввел никакого сообщения, то выполнится единственная команда в фигур­ных скобках под номером 3;

{3

Exit; - это команда выхода из программы. Посетитель может не указывать свои данные в первых трех текстовых полях, но если он оставил пустой тек­стовую область для ввода сообщения, программа дальше выполняться не бу­дет и запись данных в текстовый файл производиться не будет;

3}

$imja=$_POST['imja']; $email=$_POST['email']; $url=$_POSTf'url'J;

$text=$_POST['text']; - присваиваем четырем произвольным переменным значения элементов суперглобального массива $_POST. В этих элементах, как вы знаете, содержатся введенные пользователем данные - соответственно имя, E-mail, URL сайта, а в элементе $_POST['text'J содержится сообщение посетителя;

$data=date("d.m.Y H:i:s"); - переменной $data присваиваем текущую дату

И время в формате: число. месяц. год час. минуты. секунды;

$strok="| ".stripjags($imja). "| ".$data. "| ".strip_tags($email). " ".strip_tags($url). "|".

Strip_tags($text); - записываем все полученные из формы данные в строку, разделяя их символом «|». Введенные данные обрабатываем функцией Strip tags, которая удалит все теги и слэши, если вдруг они были введены по­сетителем. Зачем это нужно, объяснено в разд. 6.1. Полученную строку со­храняем в переменной $strok;

$strok=$strok.chr(13).chr(10); - добавляем к строке два символа chr(13) wchr(lO), означающие перевод строки, чтобы данные от следующего посетителя записывались бы с новой строки; $open=fopen($csv, "а"); - открываем текстовый файл для записи;

Fwrite($open,$strok); - записываем туда нашу строку Sstrok. После выполне­ния данных команд в текстовом файле CSVfde.txt появится строка. Сначала после пробела будет стоять символ «|». Это потом вместо пробела вы будете писать ответы на сообщения посетителей. Далее в строке будут идти имя по­сетителя, дата отсылки сообщения, E-mail посетителя, URL сайта посетителя и, наконец, после последнего символа «|» будет записано сообщение посети­теля. Итого, получится 6 ячеек (в первой ячейке будет пока пробел);

Fclose($open); - закрываем текстовый файл; 158

Echo "<а href='gostevl.php'>BepHymbCR</a>"; - после выполнения всей этой программы выводится ссылка на главную страницу гостевой книги;

2} - завершение блока команд, который выполнится только после нажатия в форме кнопки «Добавить запись»;

?> - завершение РНР-кода.

</body> </html>

Итак, код разобран, но это еще не все. Вы, наверное, заметили, что я не использовал функции блокировки текстового файла при записи. Я не стал это делать сразу, чтобы вы не запутались в этом коде. Блокировку можно и не использовать, но тогда есть риск разушения информации в текстовом файле.

Еще раз посмотрите на листинг файла blok.php (листинг 7.2), который мы составили в разд. 7.3. Эта функция, которая открывает файл, переданный ей в качестве первого аргумента, блокирует его, делает в него запись того, что передано ей в качестве второго аргумента, и, наконец, закрывает файл. Если мы данную функцию вставим в наш разобранный выше код, то 3 строки в конце кода (в листинге 7.3 файла gostev.php они выделены курсивом) будут лишними.

Замените в листинге 7.3 файла gostev.php три строки в конце кода:

$open=fopen($csv, "А");

Fwrite($open,$strok);

Fclose(Sopen);

Следующими строками:

Include "blok. php"; blokir($csv, Sstrok);

Первая строка вставляет код функции на разбираемую нами страницу Gostev.php. Далее мы вызываем эту функцию (в коде blok.php она была назва­на blokir) и передаем ей в качестве аргументов название текстового файла для записи, находящегося в переменной $csv (именно само название файла, а не его идентификатор!) и составленную нами строку с данными $strok. Все, далее вызванная функция делает свою работу.

Теперь рассмотрим и разберем следующий листинг 7.4 для главной стра­ницы нашей гостевой книги gostevl.php (см. рис. 7.1). Данный код считывает данные из текстового файла CSVfile.txt и выводит 3 сообщения в окно браузе­ра в зависимости от значения переменной $i. Для считывания данных из файла CSVfile.txt, а они у нас там будут в виде двумерной таблицы, вос­пользуемся ранее составленной нами функцией для считывания func.php (листинг 7.1).

Листинг 7.4 (файл GostevLphp) <Html> <Head>

<Ш1Е>Гостевая Книга</Ш1Е>

<link type="text/css" rel=" stylesheet" href="stil. css">

</head>

<body>

<centerxb id="lolo3"> Гостевая Книга </bx/center> <?php

If (!$_GET['i'l) {

$1=1; }

Else

{

$i=$_GETITl; }

$chislo=3;

Include "func. php"; $csv="CSVfile. txt"; $m=read($csv, "|");

Echo "<form action=gostev. php method=POST>

<input type=submit name=new value='Добавить Новую Запись'>

</formxbr>";

If($m!=NULL) {

Krsort($m);

Foreach($m as Sstroka)

{

$n++;

If(($n>$i*$chislo-$chislo)&&($n<=$i*$chislo)) {

Echo "<b>$n. Sstroka[l]</b> Sstroka[2]<br>

<b>E-mail: </bxa href=$stroka[3]>$stroka[31</a>

<b> Сайт: </bxa href=$stroka[4]>$stroka[41</axbrxbr>

<textarea rows=6 cols=70>$stroka[5]</textareaxbr>";

If($stroka[0])

{

Echo "<Ь>Ответ:</ЬхЬг>

<textarea rows=4 cols=70>$stroka[0]</textareaxbr>"; }

Echo "<hr id=lolo3>";

} }

Echo "Количество Записей: $n<br>";

}

Echo "<centerxp>,f;

For($k=l; $k<=$n/$chislo+l; $k++) {

If ($k—$i) {

Echo "<b>$k</b>"; }

Else

{

Echo "<a href=,gostevl. php? i=$k, xb>$k</bx/a>";

}

}

Echo "</px/center>"; ?>

</body> </html>

Разберем некоторые строчки кода: <title>Гостевая книга</Га1е> - оглавление страницы;

<link type= "text/ess" rel="stylesheet" href="stilcss"> - указываем браузеру на применение листа стилей stil.css;

</head> <body>

<center><b id="lolo3"> Гостевая Книга cauma</b></center> < ?php

If (!$_GET['i'J) - при загрузке данной страницы, мы должны сначала опреде­литься со значением переменной $i. От нее зависит, какие 3 записи гостевой книги будут выводиться на странице. Смысл условия следующий: если пере­менная $i не получена (или мы ее не указали), то мы присваиваем ей значе­ние единица;

Строганов А. С. Ваш первый сайт с использованием РНР-скриптов {

$i=l; }

Else - иначе, если мы задали значение / в строке браузера, например, GostevJ.php?i=2, то присваиваем переменной Si указанное значение (это зна­чение будет храниться в элементе суперглобального массива $_GET['i'J); {

$i=$_GET['i']; }

$chislo=3; - вводим переменную, которой присваиваем число 3. Именно столько записей будет на одной странице гостевой книги. По желанию може­те увеличить данное число;

Include "func.php"; - вставляем в данную страницу программный код файла Func.php. Если помните, там мы создали функцию для считывания данных из csv-файлов, т. е. файлов с табличными данными (листинг 7.1);

$csv="CSVfde.txt"; - переменной $csv присваиваем название текстового фай­ла для записи;

$m=read($csv, ""); - вызываем функцию для считывания содержимого тек­стового файла read. Именно так мы назвали эту функцию в func.php. В каче­стве аргументов передаем название файла и символ разделителя данных в строке текстового файла. Функция read возвращает содержимое текстового файла в виде двумерного массива строк и ячеек в каждой строке. Массив присваиваем переменной $т;

Echo "<form action-gostev.php method=POST> - делаем небольшую форму с одной кнопкой «Добавить новую запись», при нажатии на которую посети­тель перейдет на страницу для добавления записи gostev.php, программный код которой в прошлом листинге 7.3;

<input type=submit name=new value='Добавить Новую Запись'> </form><br> ";

If($m!=NULL) - теперь нам надо вывести записи из текстового файла в брау­зер, но вначале проверяется условие, не пуст ли массив $т, т. е. существует ли хотя бы одна запись в гостевой книге. Если массив не пуст, то выпол­нится весь код между фигурными скобками под номером 1;

Ц

Krsort($m); - сортировка массива с данными. Функция krsort сортирует мас­сив в порядке убывания индексов, т. е. свежие записи окажутся наверху;

Foreach($m as Sstroka) - эта функция, как вам уже известно, присваивает пе­ременной Sstroka элемент массива (строку с данными) и выполняет весь

Программный код между фигурными скобками под номером 2. Причем в пе­ременной Sstroka будет не просто строка, а массив данных в этой строке (строчный массив). Данный цикл повторяется до тех пор, пока не закончатся все элементы массива, т. е. пока функция foreach не переберет все строки в текстовом файле; 2!

$п++; - вводим счетчик числа сообщений, увеличивая его на единицу при каждом выполнении цикла;

If(($n>$i*$chislo-$chislo)&&($n<=:$i*$chislo)) - условие, указывающее на ин­тервал номеров выводимых сообщений (записей) гостевой книги на страни­цу. Например, при $i=l условие будет истинно, если номера сообщений (5л) будут соответствовать интервалу от 1 до 3;

3{

Echo "<b>$n. $stroka[l]</b> $stroka[2]<br> - если помните прошлый лис­тинг, данные в строке отделяются друг от друга символом «|». В строке у нас 6 ячеек. Содержимое первой ячейки будет являться элементом строчного массива Sstroka с индексом 0, т. е. $stroka[0J. Содержимое второй ячейки строки - первый элемент массива $stroka[ 1] и т. д. Вспомним прошлый лис­тинг. Первая ячейка ($stroka[0]) содержала пробел, вторая ($stroka[l]) - имя посетителя, третья ($stroka[2]) - дату и время добавления записи. Итак, сна­чала в браузер (см. рис. 7.1) выводится номер сообщения $п, затем имя посе­тителя жирным текстом (используются теги <Ь> и </Ь>), потом дата и время добавления сообщения. Далее стоит тег пропуска строки <br>;

<b>E-mail: </b><a href=$stroka[3]>$stroka[3]</a> - во второй строке жир­ным шрифтом выводится надпись «E-mail.», а затем выводится содержимое четвертой ячейки строки (элемент массива $stroka[3J). Это E-mail посетите­ля. При помощи тега <а> указываем ссылку на указанный посетителем элек­тронный адрес;

<Ь> Сайт: </b><a href=$stroka[4]>$stroka[4]</a><br><br> - далее выво­дим содержимое пятой ячейки строки (элемент массива $stroka[4]), делая ссылку на сайт посетителя. Потом пропускаем пару строк;

<textarea rows=6 cols=70>$stroka[5]</textarea><br>"; - далее создаем тек­стовую область и выводим туда содержимое шестой ячейки строки (элемент массива $stroka[5]). Там у нас текст сообщения от посетителя;

If($stroka[0]) - далее проверяется условие, есть ли что-нибудь в первой ячей­ке строки. В первую ячейку, как я уже отмечал, вы будете вписывать ответ на сообщение. Если вы еще ничего не вписали, то код в фигурных скобках под номером 4 выполняться не будет;

4{

Echo "<b>Ответ:</b><br> - если же вы вписали ответ вместо пробела в первую ячейку строки перед первым символом «|», то в браузер выведется текстовая область с вашим ответом;

<textarea rows=4 cols=70>$stroka[0]</textarea><br>"; - вывод текстовой области с вашим ответом на сообщение посетителя. Ответ, как нетрудно до­гадаться, находится в нулевом элементе строчного массива $stroka[0] (в пер­вой ячейке строки текстового файла);

4}

Echo "<hr id=lolo3> "; - выводим горизонтальную линию, отделяя сообщения друг от друга. Цвет линии задается параметром 1о1оЗ, который у меня при­сутствует в листе стилей stil.css',

3} - завершение вывода записей посетителя. Выведутся 3 записи;

2} - окончание выполнения цикла foreach. Он переберет все строки, но со­гласно условию if(($n>$i*$chislo-$chislo)&&($n<=$i*$chislo)) в браузер вы­ведутся данные только из трех строк. Какие именно строки - зависит от зна­чения переменной $i;

Echo "Количество записей: $n<br> "; - выводится общее число записей. По­скольку функция foreach перебирает все строки, увеличивая переменную $п На единицу, после окончания цикла в переменной $п будет общее число этих строк, т. е. общее число сообщений;

1} - конец действия условия if($m!=NULL) (см. выше);

Echo "<center><p>"; - после вывода трех сообщений гостевой книги мы должны разместить ссылки на другие сообщения. Ссылки выводим в центре, в отдельном блоке <р>',

For($k=l; $k<=$n/$chislo+I; $k++) - при помощи цикла for выводим ссылки на остальные страницы с сообщениями гостевой книги. Страниц с сообще­ниями у нас будет несколько, но все они как бы будут объединены в одну. Будет меняться только параметр $i, и в зависимости от этого параметра на страницу будет выводиться та или иная порция из трех сообщений. В пе­ременной $п у нас хранится общее число всех сообщений в массиве $т. Чис­ло $n/$chislo+l означает, сколько всего должно быть страниц с записями гос­тевой книги. Отсюда счетчик $к означает у нас как бы номер страницы с оче­редными тремя сообщениями гостевой книги;

If ($k==$i) - прежде чем выводить ссылки - проверяется условие. Нечто по­добное я уже объяснял при выводе ссылок новостей сайта в листинге 5.8 (файл new 1.php). Итак, на странице, например gostevl.php?i=2, будут ссылки на другие 3 записи гостевой книги (на страницы с другим параметром $i). Нам нужно сделать так, чтобы не срабатывала ссылка на ту страницу, на которой находится посетитель. Например, если посетитель находится на второй странице (в этом случае $i=$k=2), то зачем ему ссылка на вторую страницу? Выведется только числовой номер страницы (выполнится команда между фигурными скобками под номером 6); Б{

Echo "<b>Sk</b>"; 6}

Else

7{

Echo "<а href='gostevl.php?i=$k'><b>$k</b></a>"; - выводим ссылки на страницы с другими параметрами $i, на которых посетитель еще не находится;

7}

5} - окончание цикла вывода ссылок;

Echo "</p></center>"; - закрываем блок ссылок;

?> - окончание РНР-кода;

</body>

</html> - конец кода.

Итак, гостевая книга готова. Запустите программу gostevl.php. Введите десять записей. Данные десяти посетителей можете просто выдумать. После ввода десятой записи и возврата опять на страницу gostevl.php вы увидите там последние 3 записи, а также ссылки на страницы гостевой книги с дру­гим параметром /: gostevl.php?i=2, gostevl.php?i=3, gostevl.php?'^4. Перей­дите последнюю страницу gostevl.php?i=4. Вы должны увидеть там свою первую запись. Теперь откройте текстовый файл с записями CSVfile.txt И в самом начале последней десятой строки, до символа «|», введите текст, например «Ответ на десятую запись». Сохраните и закройте текстовый файл. Перезапустите опять программу gostevl.php. Вы опять увидите послед­ние 3 записи, но самая верхняя запись будет уже с ответом (рис. 7.3).

Если вы хотите редактировать текстовый файл CSVfde.txt не заходя на сервер, где будет находиться ваш сайт, составьте программу наподобие RedaktNovost.php (листинг 5.6). Эта программа создавала интерфейс для ре­дактирования текстового файла с новостями. Создать подобную программу для редактирования текстового файла с сообщениями гостевой книги для вас уже не составит особого труда.

Q ^ -5Ш

Address ' http //localhost/gostevaia/goslevl php

СОЗДАНИЕ ГОСТЕВОЙ КНИГИ

Гостеао*

- - Д.- - » > ч.. * ; ^ ^ чу ^ ^^

|Ну и, наконец, десятая запись

Добавить новую запись

СОЗДАНИЕ ГОСТЕВОЙ КНИГИ

Мой ответ на десятую запись

2. Алексей 26 12 200? 09 38 13

{Девятая запись

Шй

Рис. 7.3


Ваш первый Сайт С использованием РНР-скриптов

Создание сайта

Итак, при помощи данной книги вы создали сайт. Конечно, сайт в таком виде не очень привлекателен, так как он создавался исключительно для при­мера. Но используя полученные знания в этой книге, …

ИСПОЛЬЗОВАНИЕ СЕРВИСА ROBOXCHANGE ДЛЯ ОПЛАТЫ

Если у вас нет никакой возможности получить персональный аттестат, или просто лень это делать, то для оплаты товаров со своего сайта вы можете воспользоваться сервисом Roboxchange. Этот сервис дает возможность …

ИСПОЛЬЗОВАНИЕ СЕРВИСА WEB MERCHANT INTERFACE ДЛЯ ОПЛАТЫ

Сервис Web Merchant Interface позволяет получать денежные средства на свои электронные кошельки от клиентов при оплате ими электронных товаров на вашем сайте. Электронные кошельки WebMoney и Yandex мы с вами …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Партнеры МСД

Контакты для заказов оборудования:

Внимание! На этом сайте большинство материалов - техническая литература в помощь предпринимателю. Так же большинство производственного оборудования сегодня не актуально. Уточнить можно по почте: Эл. почта: msd@msd.com.ua

+38 050 512 1194 Александр
- телефон для консультаций и заказов спец.оборудования, дробилок, уловителей, дражираторов, гереторных насосов и инженерных решений.