Наверняка каждому из вас не раз хотелось узнать, что думают о Вашем сайте Ваши посетители. И Вы наверняка уже искали в Интернете различные php скрипты, и довольно часто сталкивались с тем, что большинство таких книг используют базы данных, что затрудняет ее применение на бесплатных хостингах, где поддержка баз данных осуществляется только за $$.
Поэтому я пришел к выводу, что лучшая гостевая книга та, которую напишешь сам. Я отталкивался от того, что гостевая книга должна работать без поддержки баз данных, используя самый слабенький хостинг и самую старую версию PHP движка.
Опишу наперёд все минусы и плюсы этой гостевой книги.
Переносимость. Вся база сообщений храниться в одном файле, который может быть с легкостью скопирован в архив или еще куда-нибудь. Легкость. PHP скрипт занимает всего 12 килобайт. Даже на слабой машине такой код будет «летать»
Многофункциональность. Делалось «для себя», поэтому добавлены такие удобные вещи как СМС и Приват сообщения.
В гостевой книге используется в качестве базы текстовый файл, поэтому не требуется поддержка баз данных и прочих наворотов.
Итак, если Вам всё еще интересно как она работает, приступим. Прежде всего нужно рассказать её общий принцип работы. Скрипт гостевой состоит из двух частей: основной и дополнительный. Основной скрипт гостевой умеет всего на всего отображать сообщения, форматировать их и корректно выводить смайлики. Эта часть скрипта будет вызываться каждый раз при доступе к гостевой книге. Дополнительная часть скрипта добавляет записи в базу, отправляет СМС’ки (необходима поддержка моб. оператора), и отправляет по почте Приват сообщения. А теперь подробно о работе каждого из них.
Основной модуль.
Основной модуль выполняется при отображении записей гостевой книги. Вызывается только если переменная скрипта $go пустая! Сначала нам нужно отобразить вверху страницы саму форму для сообщений.
После чего вставляем таблицу со смайлами:
Дальше всё просто. Формат базы такой, что каждая следующая ячейка базы находиться в новой строке, поэтому считываем эти строки, форматируем и запоминаем.
Нулевой странички у нас нет, поэтому если она нулевая, присваиваем значение 1.
Важная часть программы. Эта процедура заменяет названия смайлов на их ссылки к рисункам (а также маты на звездочки и т.д.)
Проверяем на какой мы находимся странице и выводим соответствующие записи
Внизу страницы выводим ссылки на все станицы гостевой книги
Дополнительный модуль
Выполняется, только если переменная $go равна «add».
Дальнейшие действия зависят от переменной $type. (Тип сообщения)
СМС:
Следующие функции отправляют СМС на мобильные телефоны.
Внимание! Эти функции доступны только при поддержке моб. оператора. Позвоните своему оператору и узнайте, как с просто e-mail послать СМС на телефон. Полученный адрес впишите вместо [email protected].
Сообщение:
Сообщаем себе на телефон (или куда угодно на почтовый ящик) о новом сообщении
Следующая часть кодов расчитана на всяких уродов, которые любят ламать гостевые книги портя нам при этом настроение. Поэтому все "опасные" символы мы заменяем на спец. сиволы html
Открыли базу и дописали в конец новое сообщение:
Приват:
Отправили себе на ящик приват сообщение, и заодно напоминание об этом на телефон:
Вывод:
Написать гостевую книгу не так и сложно, как может показаться на первый взгляд. Самое главное определиться с требованиями к гостевой. Остальное – дело техники.
</div>
Поэтому я пришел к выводу, что лучшая гостевая книга та, которую напишешь сам. Я отталкивался от того, что гостевая книга должна работать без поддержки баз данных, используя самый слабенький хостинг и самую старую версию PHP движка.
Опишу наперёд все минусы и плюсы этой гостевой книги.
Переносимость. Вся база сообщений храниться в одном файле, который может быть с легкостью скопирован в архив или еще куда-нибудь. Легкость. PHP скрипт занимает всего 12 килобайт. Даже на слабой машине такой код будет «летать»
Многофункциональность. Делалось «для себя», поэтому добавлены такие удобные вещи как СМС и Приват сообщения.
В гостевой книге используется в качестве базы текстовый файл, поэтому не требуется поддержка баз данных и прочих наворотов.
Итак, если Вам всё еще интересно как она работает, приступим. Прежде всего нужно рассказать её общий принцип работы. Скрипт гостевой состоит из двух частей: основной и дополнительный. Основной скрипт гостевой умеет всего на всего отображать сообщения, форматировать их и корректно выводить смайлики. Эта часть скрипта будет вызываться каждый раз при доступе к гостевой книге. Дополнительная часть скрипта добавляет записи в базу, отправляет СМС’ки (необходима поддержка моб. оператора), и отправляет по почте Приват сообщения. А теперь подробно о работе каждого из них.
Основной модуль.
Основной модуль выполняется при отображении записей гостевой книги. Вызывается только если переменная скрипта $go пустая! Сначала нам нужно отобразить вверху страницы саму форму для сообщений.
Код:
echo "
<script language=JavaScript>var ico;function smile(ico) {document.guest.mess.value= document.guest.mess.value+ico;}</script>
<body bgcolor=\"#D6DFEF\">
<form action=\"guestbook.php?go=add\" method=post name=guest>
<center>
<TABLE border=0 style=\"border: 1px solid #C2CBDB \" width=\"150\" height=\"100\">
<TR>
<TD bgcolor=\"#C2CBDB\" align=center colspan=2>
[I][B]<font size=4 color=\"#000000\">Отправка сообщения</font>[/B][/I]
</TD></TR>
<TR>
<TD>
Автор: <INPUT TYPE=\"text\" style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BACKGROUND:#D6DFEF\" SIZE=\"10\" VALUE=\"\" NAME=nick>
E-mail: <INPUT TYPE=\"text\" style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BACKGROUND:#D6DFEF\" SIZE=\"15\" VALUE=\"\" NAME=mail>
Тип сообщения:
<SELECT NAME=type style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BACKGROUND:#D6DFEF\">
<OPTION SELECTED>Сообщение
<OPTION>Приват
<OPTION>SMS
</SELECT>
<textarea name=mess rows=9 cols=63 style=\"BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BACKGROUND:#D6DFEF\">
</textarea>
<align=\"right\">
<input style=\"border: 1px solid #C2CBDB; BACKGROUND:#C2CBDB \" type=\"submit\" value=\"Отправить\" name=\"add\" >
</TD>
<TD>
Код:
<TABLE border=0 style=\"border: 1px solid #C2CBDB \">
<tr>
<td width=22 height=22 align=center valign=middle><a href=\"java script: smile(' :smile: ');\"><img src=img/smile.gif border=0 width=15 height=15></a></td>
<td width=22 height=22 align=center valign=middle><a href=\"java script: smile(' :cry: ');\"><img src=img/cry.gif border=0 width=15 height=15></a></td>
<td width=22 height=22 align=center valign=middle><a href=\"java script: smile(' :evil: ');\"><img src=img/evil.gif border=0 width=15 height=15></a></td>
</tr></table>
</TD>
</TR></TABLE>
";
Код:
$num=count($base);
$curr=-1;
//Начинаем считывать текст, попутно форматируя его.
while ($cnt<$num)
{
$curr++;
$str=$base[$cnt];
$out=$out."<table width=100%>\n";
$out=$out."<TR><TD bgcolor=\"#C2CBDB\" align=left><font size=2>\n";
$out=$out."Номер: ".$str." / ";
$cnt++;
$str=$base[$cnt];
$out=$out."Автор: <a href=\"mailto:".$str."\">";
$cnt++;
$str=$base[$cnt];
$out=$out.$str."</a> / \n";
$cnt++;
$str=$base[$cnt];
$out=$out.$str." / \n";
$cnt++;
$str=$base[$cnt];
$out=$out."Дата: ".$str."</TD></TR>\n";
$cnt++;
$str=$base[$cnt];
$out=$out."<TR><TD align=left>\n";
$out=$out.$str.$br;
$out=$out."</TD></TR></Table>\n";
// Собираем в массив все записи
$records[$curr]=$out;
$out='';
$cnt++;
}
Код:
if ($page==0) {$page=1;};
Код:
$cnt=0;
// Говорим о том, что все данные лежат тут:
$base=file("base.dat");
$work=0;
$out='';
$ready='';
// Кол-во строк в файле:
function replace ($string)
{
$exech="autochange.dat";
$string = " ".$string;
$autochange = file ($exech);
$lines = count ($autochange);
for($i=0;$i<$lines;$i++)
{
list($change1,$change2)= explode("|", $autochange[$i]);
$string = eregi_replace("$change1","$change2",$string);
}
return trim($string);
}
Код:
while ($curr>-1) {
if ($curr<(count($records)-$rpp*($page-1)) and $curr>=(count($records)-$rpp*($page))) {
$out=$out.$records[$curr];
$out=replace($out);
}
$curr=$curr-1;
}
Код:
echo "<TABLE border=0 style=\"border: 0px solid #C2CBDB\" width=\"100%\">";
echo "<TR><TD bgcolor=\"#C2CBDB\" align=center>";
While ($curr<count($records)) {
$pp++;
$curr=$curr+$rpp;
if ($pp==$page) {echo "[b]$page[/b] ";} else {
echo "<a href=guestbook.php?page=$pp>$pp</a> ";
};
};
echo "</font>[/B][/I]</TD></TR>";
Выполняется, только если переменная $go равна «add».
Дальнейшие действия зависят от переменной $type. (Тип сообщения)
СМС:
Код:
@mail("mailto:[email protected]);
@mail("mailto:[email protected] to send sms for you!".$ip);
Внимание! Эти функции доступны только при поддержке моб. оператора. Позвоните своему оператору и узнайте, как с просто e-mail послать СМС на телефон. Полученный адрес впишите вместо [email protected].
Сообщение:
Сообщаем себе на телефон (или куда угодно на почтовый ящик) о новом сообщении
Код:
@mail("[email protected]","HomePage", "New item in your guestbook!".$ip);
Код:
$mess = stripslashes($mess);
$mess = ereg_replace("<","<",$mess);
$mess = ereg_replace(">",">",$mess);
$mess = ereg_replace('\\\"',""",$mess);
$mess = ereg_replace("!","!",$mess);
$mess = ereg_replace("\r","",$mess);
$mess = ereg_replace("\n","
",$mess);
$mess = ereg_replace("%","%",$mess);
$mess = ereg_replace("^ +","",$mess);
$mess = ereg_replace(" +$","",$mess);
$mess = ereg_replace(" +"," ",$mess);
Код:
$base=file("base.dat");
$count=round(count($base)/6);
$base=fopen("base.dat","a");
fputs($base,$count.$br.$mail.$br.$nick.$br.$ip.$br. $dd.$br.$mess.$br);
Отправили себе на ящик приват сообщение, и заодно напоминание об этом на телефон:
Код:
@mail("[email protected]","HomePage",$nick.$br.$mail.$br.$ip.$br.$date. $br.$mess.$br);
@mail("[email protected]","HomePage", "New item in your private guestbook!".$ip);
Написать гостевую книгу не так и сложно, как может показаться на первый взгляд. Самое главное определиться с требованиями к гостевой. Остальное – дело техники.
</div>