Итак собственно скрипт отображающий гостевую книгу: gbook.php
<? require_once "gbook.lib"; gbook_init(); // Выберем все сообщения из таблицы // записи сортируем по убыванию времени: // от последних сообщений к первым $r=mysql_query("select k_msg, guest, email, url, icq, time, msg, replay from $table order by time desc") or my_error(); $pgsz=8; // Количество сообщений на страницу $pgbar=''; // Здесь будет сформирован текст ссылок на страницы if(!isset($pg))$pg=0; // По умолчанию с первого сообщения $rows=mysql_num_rows($r); // Число записей = число сообщений $pgcnt=$rows/$pgsz; // Число страниц // Формируем строку страниц for($i=0;$i<$rows;$i+=$pgsz) if( ($i>=$pg) && ($i<($pg+$pgsz)) ) $pgbar.=($i/$pgsz+1); else $pgbar.="<a href=gbook.php?pg=$i>".($i/$pgsz+1)."</a> "; ?> <html> <head> <title>Гостевая книга</title> <meta http-equiv=Content-Type content="text/html; charset=windows-1251"> </head> <body> <h2 align=center>Гостевая книга</h2> <div align=center><?=$pgbar?></div> <table width=100% border=1> <? // Выведем сообщения $i=0; while($f=mysql_fetch_array($r)) { if( ($i>=$pg) && ($i<($pg+$pgsz)) ) { echo "<tr><td align=center valign=top width=25%>"; echo htmltrim($f['guest'])."<br>"; $email=htmltrim($f['email']); $href='mailto:'.$email; echo "<a href=$href>$email</a><br>"; $url=htmltrim($f['url']); echo "<a href=$url>$url</a><br>"; echo "ICQ: ".htmltrim($f['icq'])."<br>"; echo my_date($f['time']); echo "</td>"; $mes=nl2br(htmltrim($f['msg'])); echo "<td align=left valign=top>$mes"; $replay=nl2br(htmltrim($f['replay'])); if($replay): echo "<hr>$replay"; endif; echo "</td>"; if($admin): // А это только для администратора echo "<td width=10% align=center valign=top>"; // Ссылка для редактирования сообщения echo "<a href=replay.php?sid=$sid&id=$f[k_msg]>Ответить</a><br>"; // Ссылка для удаления сообщения echo "<a href=drop.php?sid=$sid&id=$f[k_msg]>Удалить</a>"; echo "</td>"; endif; echo "</tr>"; } $i++; if($i>=($pg+$pgsz)) break; } ?> </table> <div align=center><?=$pgbar?></div> <table align=center><tr><td> <form action="post.php" name=frm method=post> <h3 align=center>Оставьте свое сообщение</h3> <table> <tr><td align=right><b><font color=red>*</font>Имя:</b></td> <td><input class=e type=text name=Login size=40></td></tr> <tr><td align=right><b>e-mail:</b></td> <td><input class=e type=text name=Email size=40></td></tr> <tr><td align=right><b>URL сайта:</b></td> <td><input class=e type=text name=Url size=40></td></tr> <tr><td align=right><b>ICQ:</b></td> <td><input class=e type=text name=Icq size=40></td></tr> </table> <b><font color=red>*</font>Сообщение:</b><br> <center> <textarea class=t cols=40 rows=8 name=Msg></textarea><br> <input type=submit value="Отправить"> </center> </form> <div align=center><br>gbook 1.0 beta © Золотов Алексей 2005<br> <a href=http://zolotov.h14.ru>http://zolotov.h14.ru</a> </div> </body> </html>
Вот и все. Это самое основное, осталось сделать панель модерирования гостевой книги, чтобы можно было легко удалять и редактировать оставленные сообщения. Для входа в режим администрирования создадим отдельный скрипт. Когда пользователь вводит пароль, то на основе его и текущей даты генерируется код сессии, если переданный в скрипт код сессии правильный, то считается, что зашел администратор, и ему открываются все возможности. admin.php
<? $addr=dirname($SCRIPT_NAME); if($addr=='/')$addr='/gbook.php'; else $addr.='/gbook.php'; $addr="http://".$SERVER_NAME.$addr; require_once "gbook.lib"; if(isset($pass)) { my_redirect($addr."?sid=".md5($pass.date('dmYH'))); exit; } ?> <html> <head> <title>Гостевая книга</title> <meta http-equiv=Content-Type content="text/html; charset=windows-1251"> </head> <body> <h3 align=center>Вход в режим модерирования</h3> <form action=admin.php method=post> <table align=center><tr><td> <b>Введите пароль:</b> <input type=password name=pass> <input type=submit value="Войти"> </td></tr></table></form> <div align=center><br>gbook 1.0 beta © Золотов Алексей 2005<br> <a href=http://zolotov.h14.ru>http://zolotov.h14.ru</a></div> </body> </html>
В главном скрипте в режиме администратора мы создали ссылки для редактирования и удаления сообщений. Для начала приведу скрипт для удаления сообщения - он короче. drop.php
<? require_once "gbook.lib"; $id=trim($id); gbook_init(); if(!$admin) error("Отказано в доступе"); if(!$id) error("Не задан идентификатор удаляемого сообщения<b>id</b>"); // Удалим сообщение mysql_query("delete from $table where k_msg=$id") or my_error(); $addr=dirname($SCRIPT_NAME); if($addr==='/') $addr.='gbook.php'; else $addr.='/gbook.php'; $addr="http://".$SERVER_NAME.$addr; my_redirect($addr); echo "<b>Сообщение удалено. <a href=$addr>Назад</a></b>" ?>
А теперь скприпт, отображающий страницу для редактирования сообщения. replay.php
<? require_once "gbook.lib"; $id=trim($id); gbook_init(); if(!$admin) error("Отказано в доступе"); if(!$id) error("Не задан идентификатор редактируемого сообщения<b>id</b>"); $r=mysql_query("select k_msg, guest, email, url, icq, time, msg, replay from $table where k_msg=$id") or my_error(); if(mysql_num_rows($r)==0) error("Сообщения с id=$id нет в гостевой таблице"); $f=mysql_fetch_array($r); $name=htmltrim($f['guest']); $email=htmltrim($f['email']); $url=htmltrim($f['url']); $icq=htmltrim($f['icq']); $msg_n=htmltrim($f['k_msg']); $replay=htmltrim($f['replay']); $msg=htmltrim($f['msg']); $date=my_date($f['time']); ?> <html> <head> <title>Гостевая книга</title> <meta http-equiv=Content-Type content="text/html; charset=windows-1251"> </head> <body> <h3 align=center>Редактирование сообщения</h3> <form action=save.php method=post> <table align=center><tr><td> <table> <tr><th align=right>Имя:</th> <td><input class=e type=edit name=Login value='<?=$name?>'></td></tr> <tr><th align=right>E-Mail:</th> <td><input class=e type=edit name=Email value='<?=$email?>'></td></tr> <tr><th align=right>ICQ:</th><td> <input class=e type=edit name=Icq value='<?=$icq?>'></td></tr> <tr><th align=right>Сайт:</th><td> <input class=e type=edit name=Url value='<?=$url?>'></td></tr> <tr><th align=right>Дата:</th><td><?=$date?></td></tr> </table> </td><td> <b>Сообщение:</b><br> <textarea cols=40 rows=10 name=Msg><?=$msg?></textarea><br> <b>Ответ:</b><br> <textarea cols=40 rows=10 name=Replay><?=$replay?></textarea> </td></tr></table> <input type=hidden name=sid value=<?=$sid?>> <input type=hidden name=id value=<?=$msg_n?>> <center><input type=submit value='Сохранить'></center> </from> <div align=center><br>gbook 1.0 beta © Золотов Алексей 2005<br> <a href=http://zolotov.h14.ru>http://zolotov.h14.ru</a></div> </body></html>
Сохранение редактированного сообщения происходит в скрипте save.php save.php
<? require_once "gbook.lib"; $Login=trim($Login); $Email=trim($Email); $Url=trim($Url); $Icq=trim($Icq); $Msg=trim($Msg); $Replay=trim($Replay); $k_msg=trim($id); gbook_init(); if(!$admin) error("Отказано в доступе"); if(!$k_msg) error("Неуказан идентификатор <b>id</b> сохраняемого сообщения"); if(!$Login || !$Msg) error("Поля <b>Имя</b> и <b>Сообщение</b> должны быть заданы"); // Обновим запись mysql_query("update $table set guest='$Login', email='$Email', url='$Url', icq='$Icq', msg='$Msg', replay='$Replay' where k_msg=$k_msg") or my_error(); $addr=dirname($SCRIPT_NAME); if($addr==='/') $addr.='gbook.php'; else $addr.='/gbook.php'; $addr="http://".$SERVER_NAME.$addr; my_redirect($addr); echo "<b>Сообщение отправлено. <a href=$addr>Назад</a></b>" ?>
Вот и весь скрипт. Осталось только установить и использовать.
|