| |||||||||||||||||||||||||||||||||
Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие |
|||
| РБМК-1000 | |||
| Гражданский суда | |||
| Авиация | |||
Высшая математика |
|||
| Задачи | |||
| Практикум | |||
| Карта сайта | |||
Проект: гостевая книга |
С первых дней World Wide Web разработчики сайтов стремились к тому, чтобы посетители могли поделиться своими мыслями и комментариями по поводу сайта. На сайтах эта возможность обычно называется <гостевой книгой> (guestbook). Я покажу, как легко создать гостевую книгу при помощи форм HTML, средств обработки форм РНР и текстового файла. Прежде всего создается инициализационный файл, содержащий некоторые глобальные переменные и функции приложения (листинг 10.10). Листинг 10.10. Файл init.inc, используемый при создании гостевой книги <? // Файл: init.inc // Назначение: глобальные переменные и функции для проекта гостевой книги // Заголовок страницы по умолчанию $title = "My Guestbook"; // Цвет фона $bg_color = "white": / // Гарнитура шрифта $font_face = "Arial, Verdana, Times New Roman"; // Цвет шрифта $font_color = "black"; // Дата отправки $post_date - date("M d y"); // Файл данных гостевой книги $guest_file = "comments.txt"; // Функция читает данные гостевой книги //и отображает их в браузере function view_guest($guest_file) { GLOBAL $font_face, $font_color; print "Return to <a href=\"index.php\">index</a>,<br><br>"; // Если в файле гостевой книги имеются данные… if (filesize($guest_file) > 0) : // Открыть файл данных гостевой книги $fh = fopen($guest_file. "r") or die("Couldn't open $guest_file"); print "<table border=1 cellpadding=2 cellspacing=0 width=\"600\">"; // Повторять до конца файла while (! feof($fh)) : // Прочитать следующую строку $line <= fgetsdfh, 4096); // Разбить строку на компоненты // и присвоить каждый компонент переменной list($date. $name, $email, $comments) = explode("|", $line): // Если указано имя посетителя, вывести его if ($name != "") : print "<tr>": print "<td><font color=\"$font_co!or\" face=\"$font_face\">Date:</font></td>"; print "<td><font color=\"$font_color\" face=\"$font_face\">$date</font></td>"; print "</tr>"; print "<tr>"; print "<td><font color=\"$font_color\" face=\"$font_face\">Name:</font></td>"; print "<td><font color=\"$font_color\" face=\"$font_face\">$name</font></td>"; print "</tr>"; print "<tr>"; print "<td><font color=\"$font_color\" face=\"$font_face\">Email:</font></td>"; print "<td><font color=\"$font_color\" face=\"$font_face\">$email</font></td>"; print "</tr>"; print "<tr>"; print "<td valign=\'top\"><font color=\"$font_color\" face=\"$font_face\">Message:</font></td>"; print "<td><font color=\"$font_color\" face=\"$font_face\">$comments</font></td>"; print "</tr>"; print "<tr><td colspan=\"2\"> :</td></tr>"; endif; endwhile; print "</table>"; // Закрыть файл fclose($fh); else : print "<h3>Currently there are no entries in the guestbook!</h3>"; endif; } // view_guest // Функция сохраняет новую информацию в файле данных function add_guest($name, $email, $comments) { GLOBAL $post_date, $guest_file; // Отформатировать данные для ввода , $contents = "$post_date|$name|$email |$comments\n"; // Открыть файл данных $fh = fopen($guest_file. "a") or dieC'Could not open $guest_file!"); // Записать данные в файл $wr = fwrite($fh, $contents) or die("Could not write to $guest_file!"); // Закрыть файл fclose($fh); } // add_guest ?> Затем создаются еще три файла: файл ссылок index.php, файл add_guest.php для вывода информации гостевой книги и файл view_guest.php для ввода новых данных. Файл index.php (листинг 10.11) просто отображает две ссылки для выполнения основных функций гостевой книги - просмотра и добавления новых данных. Эти ссылки легко включаются в сайт, имеющий более сложную структуру. Листинг 10.11. Файл index.php со ссылками для просмотра и добавления новых данных в гостевую книгу <html> <? INCLUDE("init.inc"); ?> <head> <title><?=$page_title;?></title> </head> <body bgcolor="<?=$bg_color;?>" text="#000000" link="#808040" vlink="#808040" alink="#808040"> <a href="view_guest.php">View the guestbook!</a><br> <a href="add_guest.php">Sign the guestbook!</a><br> </body> </html> Файл view_guest.php (листинг 10.12) выводит всю информацию гостевой книги, хранящуюся в файле данных. Листинг 10.12. Файл view_guest.php <html> <? INCLUDE("init.inc"); ?> <head> <t1tle><?=$page_title;?></t1tle> </head> <body bgcolor="<?=$bg_color:?>" text="#000000" link=" vlink="#808040" alink="#808040"> vi ew_guest ( $guest_file ); ?> Файл add_guest.php (листинг 10.13) запрашивает у пользователя новые данные для внесения в гостевую книгу. Введенная информация записывается в файл данных. Листинг 10.13. Файл add_guest.php <html> <? INCLUDE("init.inc"); ?> <head> <title><?=$page_title:?></title> </head> <body bgcolor="#ffffff" text="#000000" link="#808040" vlink="#808040" alink="#808040"> ?< // Если форма еще не отображалась - запросить данные у пользователя if (! $seenform) : ?> <form action="add_guest.php" method="post"> <input type="hidden" name="seenform" value="y"> Name:<br> <input type="text" name="name" size="15" maxlength="30" value=""><br> Email:<br> <input type="text" name="email" size="15" maxlength="35" value=""><br> Comment: <br> <textarea name="comment" rows="'3" cols="40"></textarea><br> <input type="submit" value="submit"> </form> // Форма уже отображалась - добавить данные в текстовый файл. else : add_guest($name, $email, $comment); print "<h3>Your comments have been added to the guestbook. <a href=\"index.php\">Click here</a> to return to the index. </h3>"; endif; ?> К числу основных преимуществ модульной разработки приложений относится простота адаптации для других систем. Допустим, вы решили перейти от хранения данных в текстовом файле к использованию базы данных. Стоит изменить содержимое add_guest( ) и view_guest( ), и ваша гостевая книга перейдет на работу с базой данных. На рис. 10.8 показано, как выглядит гостевая книга после сохранения пары записей.
Рис. 10.8. Просмотр гостевой книги (view_guest.php) Информация, показанная на рис. 10.8, хранится в файле данных в следующем виде: Oct 29 00|Michele|michelle@latorre.com|I love cheese! Oct 29 00|Nino|nino@latorre.com|Great site! |
| На главную |