Пишем гостевую книгу(удаление записей)

Для тех, кто не хочет останавливаться на достигнутом, предлагаю написать еще и админ панель для удаления сообщений.

Итак сам код для выбора удаляемого сообщения, будет отличатся от index.php только тем, что в ем будет еще возле каждого сообщения ссылка на удаление ненужного сообщения. Обзавем данный скрипт admin.php, вот его код:

<? header("Content-type:text/vnd.wap.wml;charset=UTF-8"); print"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http:// www.wapforum.org/DTD/wml_1.1.xml\"> <wml><card id=\"main\" title=\"Админ\"> <p>"; print "<a href=\"say.php\">Сказать</a>";} $ss = @file("rek/mess.txt"); $strok = sizeof($ss); $strok=$strok-1; $ps=0 if($ts==""){$ts=$strok;} $armes=@file("rek/mess.txt"); while($ps<7 & $ts>=0){ $artext=@explode("#",$armes[$ts]); $obr=trim($artext[0]); $mess=trim($artext[1]); $mail=trim($artext[2]); $vremja=trim($artext[3]); $brauz=trim($artext[4]); if($mess!=""){ $vremja =date("H:I / d f Y", $vremja); print"<small><a href=\"del.php?del=$ts\">(del)</a></small> <b><anchor title=\"$obr\">$obr <go href=\"say.php\" method=\"post\"> <postfield name=\"obr\" value=\"$obr\"/> </go></anchor></b> <small>[$vremja]<small>: $mess<br/> <small>Мыло: $mail<br/> [$brauz]<br/>-------<br/>"; $ps=$ps+1;} $ts=$ts-1;} if($ts>=0){print "<a href=\"admin.php?ts=$ts\">Далее</a>";} print"</p></card></wml> "; ?>

Тут пояснять ничего не буду, тут и так все понятно. Если же кому не понятно, то читайте выше.

Ну а теперь напишем сам скрипт для удаления, обзовем его del.php

<? header("Content-type:text/vnd.wap.wml;charset=UTF-8"); print"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http:// www.wapforum.org/DTD/wml_1.1.xml\"> <wml><card id=\"main\" title=\"Админ\"> <p>"; $armes=@file("rek/mess.txt"); $fp=@fopen("rek/mess.txt","w"); fclose($fp); chmod ("rek/mess.txt", 0777); foreach ($armes as $key => $value) { if($key!=$del){$fp=@fopen("rek/mess.txt","a"); @fputs($fp,"$value"); fclose($fp);} } print"Удалено<br/>"; print "<a href=\"admin.php?ts=$del\">Вернутся</a>"; print"</p></card></wml> "; ?>

Итак, попробуем разобраться как все это работает. Принцип действия тут на самом деле прост: 1)Читаем файл с сообщениями в массив (каждый элемент = строке файла, порядковый номер строки = индекс элемента массива) 2) Создаем новый файл для сообщений, (при этом старый файл удаляется) и ставим ему нужные права доступа. 3)Записываем массив в новый файл, за исключением элемента, индекс которого равен номеру удаляемого сообщения.

Вот собственно и все. В этом скрипте присутствует оператор, которого я еще не касался в этой статье, рассмотрим его поподробнее. foreach ($armes as $key => $value){группа операторов} Этот оператор цикла позволяет обойти все элементы массива. Смысл этого цикла прост: при проходе каждого элемента массива в переменную $key помещается индекс этого элемента, а в переменную $value – его значение. Имена этих двух переменных совершенно произвольны.

Для любителей более навороченных гостевых, можно еще добавить сюда смайлы, метод довольно простой, можно сделать это уже описанными мною методами, ну скажем можно в файл add.php внести изменения:

<? header("Content-type:text/vnd.wap.wml;charset=UTF-8"); print"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http:// www.wapforum.org/DTD/wml_1.1.xml\"> <wml><card id=\"main\" title=\"Добавляем\"> <p>"; if($mess != "" & $name !="") { $name=htmlspecialchars(stripslashes($name)); $mess=htmlspecialchars(stripslashes($mess)); $mail=htmlspecialchars(stripslashes($mail)); $conv1 = array("$", "#"); $conv1 = array("$$", "N"); $name=str_replace($conv1,$conv2,$name); $mess=str_replace($conv1,$conv2,$mess); $mail=str_replace($conv1,$conv2,$mail); //Определяем массивы для вставки смайлов: $smile1 = array(" ", " "); $smile1 = array("<img src=\"smile/smile.gif\" alt=\":)\"/>", "<img src=\"smile/sad.gif\" alt=\":(\"/>"); $mess=str_replace($smile1,$smile2,$mess); $time=time(); $brauz=getenv('HTTP_USER_AGENT'); $brayz=strtok($brauz,'/'); $zap="$name#$mess#$mail#$time#$brauz \r\n"; $fp=@fopen("rek/mess.txt","a"); fputs($fp,"$zap"); fclose($fp); chmod ("rek/mess.txt", 0777); print"Ваше сообщение добавлено!"; } else {print"заполните все поля!";} print"<br/> <a href=\"index.php\">Просмотреть гостевую</a> </p></card></wml> "; ?>

Ну и создав соответственно папку smile кладем туда смайлы с именами smile.gif и sad.gif.

Также можно и сделать отображение введенного адреса в виде ссылки, но об этом я напишу позже

компьютерная помощь звоните по любому вопросу Санкт-Петербург, СПб
Источник: wapteam.ru

Советую также почитать: