Создание гостевой книги как неотъемлемой атрибутики сайта – одна из модных тенденций. «Сделать гостевую», «создаем гостевую», «создание гостевой книги», «гостевая книга создать» - множеством предложений пестрит современный Интернет. О том, что включает в себя создание гостевой, кратко приведено в статье.
Сделать гостевую с целью собрать отзывы о своем сайте стремится каждый, кто хочет услышать мнение других о своей работе. Объявления типа «создаем гостевую», «создание гостевой книги» и запросы «гостевая книга создать» не предвещают заведомо успешного результата.
Создание гостевой, прежде всего, обусловлено наличием определенного модуля. Следовательно, сделать гостевую можно путем подключения готового модуля или созданием подпрограммы, что может быть основано на мануалах типа «создаем гостевую» или «создание гостевой книги». Такой модуль, как гостевая книга создать «с нуля», без знаний основ PHP или PHPNuke не представляется возможным.
Если же создание гостевой привлекает Вас как сама реализация задачи, то сделать гостевую можно, предварительно ознакомившись не только с манулами «создаем гостевую», «создание гостевой книги» или с результатами поиска по запросу «гостевая книга создать», но и с готовыми решениями проблемы «Создание гостевой», то есть с уже написанными модулями.
Этот комплексный метод поможет Вам сделать гостевую самостоятельно, с учетом логических построений людей, которые уже прошли путь от запроса «гостевая книга создать» к, возможно, самостоятельному написанию руководства «создаем гостевую» или «создание гостевой книги» – известно, что лучше учесть ошибки предшественников.
Отказываться от создания гостевой по причине непонимания кода готовых решений, которые Вы нашли по запросу «гостевая книга создать», нет причин. Возможно, Вам попался неудачный пример, по которому действительно сделать гостевую нельзя. Множество рекомендаций Вы проанализируете, прежде чем сможете написать мануалы «создаем гостевую» или «создание гостевой книги», с которых в свое время начинали.
Корректное создание гостевой – трудоемкий процесс, а с учетом всех особенностей, сделать гостевую местом, приятным для посещения, можно не только осилив пособия «создаем гостевую» или «создание гостевой книги», но и умея ответить на запрос «гостевая книга создать» самостоятельно.
Создание гостевой книги
Ниже подробно описан процесс создания гостевой книги с неплохим набором функций. Гостевая книга написана на PHP с использованием текстовых файлов для хранения данных.
Итак, прежде всего нам необходимо разобраться с файлами. Их у нас будет четыре, хотя можно объединить и в один, но это уже вам решать...
Файл №1 - guestbook.inc.dat
Создадим его, оставим пустым, и укажем ему права (0777-*nix, rwx/rwx/rwx)
Сюда будут записываться все сообщения... Да-да!!! Именно в один файл! Но не пугайтесь :) Мной лично проверялось на всеми известном сервере WallSt. база данных размером в 5, 10, 100, 250, 500, 1000 Кб! Торможения были только на 1000 Кб книге, поверьте, это более 3000 средних записей! Вам хватит ее с лихвой :)
Создадим его, оставим пустым, и укажем ему права (0777-*nix, rwx/rwx/rwx)
Сюда будут записываться все сообщения... Да-да!!! Именно в один файл! Но не пугайтесь :) Мной лично проверялось на всеми известном сервере WallSt. база данных размером в 5, 10, 100, 250, 500, 1000 Кб! Торможения были только на 1000 Кб книге, поверьте, это более 3000 средних записей! Вам хватит ее с лихвой :)
Файл №2 – config.inc
<?
$gb_on_page = "10";//кол-во мессаг в гостевой на стр.
$name_max_size = "15"; // максимальная длина ника
$email_max_size = "50"; // максимальная длина мыла
$message_max_size = "1000";//максимальная длина сообщения
$recipient =”Name.Sirname@email.zone”;
$subject = "Новое сообщение на сайте";
$site_name = “Ваш сайт”;
?>
Файл №3 – gb.php
<html>
<head>
<title>Guestbook</title>
</head>
<body>
<!-- включаем вышеописанный файл -->
<? include(‘config.inc’); ?>
<!-- пишем форму для добавки сообщений -->
<!-- ниже указываем в свойствах формы защиту от повторного нажатия кнопки Submit -->
<form onSubmit="newmsg.Submit.disabled='true'" name='newmsg' action='gbadd.php' method=post>
<!-- для всех трех полей устанавливаются максимально возможные размеры для полей имени, адреса электронной почты и сообщения -->
*Имя:<input type=text maxlength="<? echo $name_max_size; ?>" name=name><br>
E-mail:<input type=text maxlength="<? echo $email_max_size; ?>" name=email><br>
*Сообщение:<br><textarea maxlength="<? echo $message_max_size; ?>" name=guesttext cols=42 rows=10></textarea><br>
<!-- ниже указано, что при нажатии кнопки Submit она станет недоступна, и взамен ее появится кнопка с надписью «ждите!!!» -->
<input type="Submit" onClick="newmsg.Submit.value='ждите!!!'" name="Submit" value="Отправить">
<input type="reset" value="Стереть"></form>
<!-- думаете это весь файл? :) нет, ошибаетесь… Сейчас начнется самое интересное! -->
<?
$data=file("guestbook.inc.dat");
$c=count($data);
if (!isset($page)) { $page=0; }
for ($i=$page*$gb_on_page;$i<$page*$gb_on_page+$gb_on_page;$i++)
{
if($i>$c-1)break;
list($name,$email,$date,$time,$guesttext)=split(":::","$data[$i]", 5);
/* я нарочно не стал делать супер_мега_навороченных дизайнов, я лишь ограничусь простым выводом текста! Кому надо, тот легко поймет, что нужно делать! Кто не поймет, мыло будет ниже, посему читайте дальше… */
echo "<a href=”mailto:$email”>$name</a> @ [$date, $time]<br>$guesttext<br><hr>";
}
$col=$c/$gb_on_page;
echo "<center>";
if ($c<$gb_on_page){ echo ""; }
else {
echo "<b>Страницы: </b>";
/* Здесь такая штука, что если можно перейти на предыдущую страницу, то показывается примерно что то вроде этого :) << [1] 2 */
if($c>$gb_on_page & $page>0){ echo "<a href="gb.php?page=".($page-1).""><<</a>"; }
/* Ниже функция, которая отвечает за вывод нумерации страниц с сообщениями… */
/* Здесь такая штука, что если можно перейти на следующую страницу, то показывается примерно что то вроде этого :) 1 [2] >>*/
if($c>$gb_on_page & $page<$col-1){ echo "<a href="gb.php?page=".($page+1)."">>></a>"; }
echo "<br>Всего сообщений: $c";
echo "</center></font>";
?>
<!-- Уффффффффффф. Все! С этим файлом покончили, но остался главный, отвечающий собственно за добавление сообщения в гостевую книгу -->
</body>
</html>
Файл №4 -- gbadd.php
<?
include('config.inc');
/* укажем, что данные должны передаться скрипту из формы... иначе можно было бы отправить сообщение примерно таким образом:
http://myhost.ru/gb/gbadd.php?name=admine&email=you@#admin.com&guesttext=message_have_been_posted спасибо CompDocs */
$name=$_POST['name'];
$email=$_POST['email'];
$guesttext=$_POST['guesttext'];
if ($name !="" and $guesttext !="")
{
$date=date('d.m.Y');
$time=date('H:i');
// заменяем двоеточия
$guesttext = ereg_replace(":::",":::",$guesttext);
$name = ereg_replace(":::",":::",$name);
$email = ereg_replace(":::",":::",$email);
// разрешим только шрифты, картинки и списки
// теги как украшение
$guesttext = ereg_replace("<", "<", $guesttext);
$guesttext = ereg_replace(">", ">", $guesttext);
$name = ereg_replace("<", "<", $name);
$name = ereg_replace(">", ">", $name);
$email = ereg_replace("<", "<", $email);
$email = ereg_replace(">", ">", $email);
// нет кавычкам! 2=DeaD= thanX!
$name = ereg_replace(""", """, $name);
$email = ereg_replace(""", """, $email);
$guesttext = ereg_replace(""", """, $guesttext);
// удаление лишних пробелов
// в центре
$guesttext=ereg_replace(" +"," ",$guesttext);
$name=ereg_replace(" +"," ",$name);
$email=ereg_replace(" +"," ",$email);
//cправа и слева
$name=trim($name);
$email=trim($email);
$guesttext=trim($guesttext);
// перевод строки
// чтобы весь текст был на одной строке!
// мегакавычки
$name = stripslashes($name);
$email = stripslashes($email);
$guesttext= stripslashes($guesttext);
// правильные тире
$guesttext = preg_replace ("/[ ]{1,}-[ ]{1,}/", " — ", $guesttext);
$guesttext = preg_replace ("/^- /", "— ", $guesttext);
// число-число
$guesttext = preg_replace ("/(d)-(d)/", "–", $guesttext);
// слова с дефисом
$guesttext = preg_replace ("/(S+)-(S+)/", "<nobr>-</nobr>", $guesttext);
// частицы и предлоги
$guesttext = preg_replace ("/([А-Яа-яA-Za-z]) (ли|ль|же|ж|бы|б)([^А-Яа-яA-Za-z])/", ' ', $guesttext);
$guesttext = preg_replace ("/(s)([А-Яа-я]{1})s/", ' ', $guesttext);
// A.C. Пушкин
$guesttext = preg_replace ("/([А-ЯA-Z])([. ]{1})[ ]{0,1}([А-ЯA-Z])([. ]{1})[ ]{0,1}([А-ЯA-Z][А-Яа-яA-Za-z]*)/", '. . ', $guesttext);
// Пушкин А. С.
$guesttext = preg_replace ("/([А-ЯA-Z][А-Яа-яA-Za-z]*) ([А-ЯA-Z])[. ]{1}[ ]{0,1}([А-ЯA-Z]).([, )]{1})/", ' . .', $guesttext);
// преобразовываем адреса в ссылки!
$guesttext = eregi_replace("([_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3}))", "<a href="mailto: $guesttext = eregi_replace("((ht|f)tp://www.|www.)([a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})((/|?)[a-z0-9~#%&/'_+=:?.-]*)*)", "http://www.", $guesttext);
$guesttext = eregi_replace("((ht|f)tp://)((([a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3}))|(([0-9]{1,3}.){3}([0-9]{1,3})))((/|?)[a-z0-9~#%&'_+=:?.-]*)*)", "<a href="
// делаем "обрезание" слишком большого куска информации
$name=substr($name,0,$name_max_size);
$email=substr($email,0,$email_max_size);
$guesttext=substr($guesttext,0,$message_max_size);
// отправка сообщения на мой электронный адрес
// сообщение
$message .="Сообщение из гостевой книги";
// заголовки
// отправляем все нафиг!
mail($recipient, $subject, $message, $headers);