RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

Дайте жалобную книгу!

Автор: Данил КЛИМЕНКО Сайт: http://www.mycomp.com.ua/     Рейтинг: N/A из 7       <<НАЗАД
   
   Если вы не были в гостевой книге какого-либо сайта, считайте, что вы не были на этом сайте вообще. Не мечтали ли вы каждое утро перед выходом в школу/университет/на работу, проверяя свой e-mail, обнаруживать новое доброжелательное сообщение в гостевухе? Если да, то эта статья именно для вас.
   
   Для тех, кто не знает, что такое гостевая книга. Сомневаюсь, что такие есть, но все же. Гостевая книга — это страница вашего сайта, где ваши посетители будут сообщать свое мнение о сайте, о размещенной на нем информации, о том, что «здеся был Жёрик» и другие приятные вещицы. Созданием такой страницы мы сегодня и займемся. Многие скажут, что в Интернете много сервисов, где есть уже готовые скрипты гостевых книг, достаточно только зарегистрироваться и поставить на сайте ссылку. Но ведь гораздо приятнее, когда посетители похвалят вас за то, что вы умеете делать такие замечательные гостевушки, а то и автограф ненароком попросят :-).
   
   Писать мы будем на PHP, так как на данный момент, по мнению сотен тысяч людей, он является наиболее перспективным языком программирования для Интернета. Сначала разберем процесс добавления и чтения сообщений. Пользователь переходит на страницу, где отображены уже оставленные записи, и если захочет добавить свою запись, переходит по ссылке на другую страницу или на позицию текущего документа, откуда можно добавить сообщение. По-моему, последний вариант — самый удобный. Во-первых, экономит время, а время — это деньги, а во-вторых, не загрязняет кэш компьютера пользователя.
   
   Для реализации этого плана создайте 3 файла: index.php, guest.dat и add.php. Файл index.php будет отображать созданные сообщения и содержать форму для добавления новой записи. Файл guest.dat — для хранения записей. Каждая строка в этом файле будет соответствовать одной записи. А файл add.php будет добавлять запись, отсылать уведомление о новой записи вам на e-mail и переадресовывать браузер обратно на index.php. Дизайн гостевой книги тоже вещь немаловажная, но я думаю, с этим вы разберетесь и сами.
   
   Логичнее сначала заняться index.php. Открываем его в любимом текстовом редакторе и прописываем:
   
   <CENTER><FONT COLOR=#0000A0><B>Гостевая книга</B></FONT></CENTER>
   <?
    $all=file("guest.dat");
    $count=count($all);
    echo"<center><font color=#c0c0c0><B>Всего записей: $count</B></FONT><br><a href='#add' class=txt>Добавить</a></center>";
    for ($i=count($all)-1;$i>=0;$i--)
    {
    if ($all[$i]!="")
    echo "$all[$i]<hr width=75% color=#c0c0c0>";
    }
   ?>
   <a name="add"></a>
   <center><font color=#FFFFFF><B>Добавить</B></FONT></center>
   <FORM action=add.php>
   <TABLE border=0 cellpadding=0 cellspacing=0>
   <TR><TD><FONT COLOR=#000000><B>Ваше имя:</B></FONT></TD><TD><input type="text" size=30 name="name"></TD></TR>
   <TR><TD><FONT COLOR=#000000><B>E-Mail:</B></FONT></TD><TD><input type="text" size=30 name="email"></TD></TR>
   <TR><TD><FONT COLOR=#000000><B>Сайт:</B></FONT></TD><TD><input type="text" size=30 name="hp"></TD></TR>
   <TR>
    <TD COLSPAN=2><FONT COLOR=#000000><B>Сообщение:</B></FONT><br>
    <TEXTAREA NAME="message" rows=6 cols=42></TEXTAREA>
    </TD>
   </TR>
   <TR><TD><input type="submit" value="Оставить"><input type="reset" value="Очистить"></TD></TR>
   </TABLE>
   </FORM>
   
   
   Разберем строки, которые могут вызвать у вас затруднения. Строка $all=file("guest.dat"); загружает в массив $all построчно содержание нашего guest.dat. Функция File практически полностью заменяет сочетание fopen(), fget() и fclose() — она делает то же самое, но данные выдает в виде массива. Затем строкой $count=count($all); мы создаем переменную $count и придаем ей значение, обозначающее количество записей. Напомню, что каждая строка документа guest.dat является отдельной записью. Затем строками
   
    for ($i=count($all)-1;$i>=0;$i--)
    {
    if ($all[$i]!="")
    echo "$all[$i]<hr width=75% color=#c0c0c0>";
    }
   
   
   мы выводим содержание этого массива в браузер. Обратите внимание, мы создаем не простой цикл, а обратный, чтобы самая последняя запись отображалась сверху. Затем идет чистый HTML. Мы создаем якорь add, чтобы пользователь с начала страницы, кликнув по ссылке Добавить, мог сразу перейти к добавлению записи, а потом создаем форму с текстовыми полями и двумя кнопками. Поле с именем name передает имя посетителя, поле email — адрес электронной почты, hp — домашнюю страницу, а message, соответственно, текст сообщения. Здесь, вроде бы, все понятно. Теперь перейдем к add.php, на который и отправляется форма, после заполнения и нажатия кнопки Добавить. Здесь начинается самое интересное:
   
   <?
    $message = ereg_replace("<","&lt;",$message);
    $message = ereg_replace(">","&gt;",$message);
    $name = strip_tags($name);
    $email= strip_tags($email);
    $name = StripSlashes($name);
    $message = stripslashes($message);
    $message = ereg_replace("(\r\n|\n|\r)", "<br />",$message);
   $fp=fopen("guest.dat","a");
   $text="<TABLE><TR><TD><FONT COLOR=#000000><B>Имя</B></FONT>: $name";
   if ($email!="") {
    $tmp="(<a href='mailto:$email' class=txt>$email</a>)</TD></TR>";
    $text=$text.$tmp;
   } else {
    $tmp="</TD></TR>";
    $text=$text.$tmp; }
   if ($hp="") {
    $text=$text."<TR><TD><FONT COLOR=#000000><B>Сайт:</B></FONT> <a href='$hp' class=txt>$hp</a></td></tr>";}
   $text=$text."<TR><TD><Font color=#000000><B>Сообщение:</B></FONT><br>$message</TD></TR></TABLE>\n";
   fwrite($fp,$text);
   fclose($fp);
   $dateadded=date('yyyy.mm.dd hh:mm:ss');
   Header("Location: index.php");
   mail("switch@mail.zp.ua", "Сообщение в отзывах", "От: $name($email) \n Web: $hp \n $message Дата: $dateadded \n IP: $REMOTE_ADDR");
   ?>
   
   
   Первыми семью строками мы форматируем содержания переменных таким образом, чтобы они правильно отображались у нас на странице. Первые две строки удаляют из текста сообщения HTML-тэги. Точнее, не удаляют, а заменяют значки < и > специальными символами-кодами: &lt; и &gt;. Затем идут махинации с именем и e-mail'ом посетителя. Вот из этих переменных уже полностью удаляются HTML-тэги. Строками $name = StripSlashes($name); $message = stripslashes($message); мы заменяем все BackSlash’ы \ на простые /. Строка $message = ereg_replace("(\r\n|\n|\r)", "<br />",$message) ищет в тексте сообщения, переносы строк и заменяет их HTML-тэгом <BR>. Если этого не сделать, одно сообщение при записи в файл займет несколько строк, поэтому при чтении сообщений оно будет неправильно отображаться. Затем, открывается для записи файл guest.dat, проверяются переменные, хранящие значения E-mail'а и сайта посетителя, и формируется единая строка $text, которая и будет добавлена в файл guest.dat. Так что если у посетителя нет e-mail'а или сайта, эти поля не будут сохраняться вообще, чтобы не показывать пустые ссылки. Потом идет запись в файл — как мы уже договорились, в guest.dat. Теперь, чтобы вы не лазили всякий раз к себе на сайт и не проверяли таким образом гостевую на наличие новых сообщений мы сделаем так, чтобы скрипт отсылал вам это радостное известие прямо на e-mail. Отправку писем на e-mail вам поможет организовать функция Mail. Выглядит она таким образом:
   
   bool mail(string to, string subject, string message, string additional_headers);
   
   
   Параметр to указывает адрес e-mail, на который будет отправлено письмо, subject указывает тему письма, message содержит текст письма. Параметр additional_headers поможет вам добавить еще что-нибудь к заголовку письма, например, можно сразу указать, кем было добавлено сообщение. Мы этот параметр опускаем, потому что он нам не нужен. В нашем скрипте в тексте письма указывается имя, введенное посетителем, адрес его сайта, электронная почта, дата добавления записи и IP-адрес. Спешу вас предупредить: если вы пользуетесь бесплатным хостингом, по умолчанию функция mail может быть недоступна. Для того чтобы ее активизировали, вам нужно связаться с администрацией и обговорить возможность ее активации. Такой уж он, бесплатный сыр :-). Последняя неразобранная строка — Header("Location: index.php");. Она переадресовывает браузер на страницу отображения всех записей — index.php. Вместо index.php может быть указан путь к любому документу, причем не только к локальному файлу. Вот и все!
   
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool