Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Удаление сообщений в гостевой


Автор: Aliance 9.9.2004, 18:00
Доброго всем времени суток.

Проблема: как написать функцию удаления (модерирования) сообщений?

Я не считаю себя опытным в php, даже наоборот, но на собственную гостевуху сил хватило, читал лит-ру и понял...она самая простая. Но а как удалять написаные сообщения? Желатьльно не только написать функцию, но объяснить что где там...

СУВ, Альянс.

Автор: Ignat 9.9.2004, 18:04
Гм, а БД какая мускукльная, файловая аль постгрес?

Автор: Aliance 9.9.2004, 18:10
Ignat
Чесно говоря: хз.

вот код:

Код

index.php
<?
require("config.php");

function show_form()
{
?>

<center>

<IMG src="../img/guestbook.jpg" height=60 width=600 ALT="Гостевая книга">

<form method="post" action="" name="guestbook">
<TABLE border=0>
<TR vAlign=top>
<TD align=left>Имя:</TD>
<TD align=center><input type="text" name="name" maxlength="24" size="35" class="unhilited" onfocus="setHilite(event)"
onblur="setUnHilite(event)" onchange="isNotEmpty(this)" /></TD>
</TR>
<TR vAlign=top>
<TD align=left>E-mail:</TD>
<TD align=center><input type="text" name="email" maxlength="22" size="35" class="unhilited" onfocus="setHilite(event)"
onblur="setUnHilite(event)" onchange="if (isNotEmpty(this)) {isEMailAddr(this)}" /></TD>
</TR>
<TR vAlign=top>
<TD align=left>Сообщение:</TD>
<TD align=center><textarea cols="34" rows="10" name="mess" class="unhilited" onfocus="setHilite(event)"
onblur="setUnHilite(event)" onchange="isNotEmpty(this)" maxlength="1600"></textarea></TD></TR>
<TR align=right>
<TD colspan=2>

<input type="button" name="confirm" id="confirm" class="button" value="Послать" onclick="if (validateForm(this.form)) {this.form.submit()}" />
&nbsp;<input type="reset" value="Очистить" class="button" /></TD>
</TD>
</TR>
</TABLE>
</form>

<hr width=80%>

<?
}

function save_mess()
{
global  $name, $email, $mess, $base;

$date = date("d.m.y - H:i:s");

$text = $name."^^".$email."^^".$date."^^".$mess."\n";
$fp = fopen($base,"a");
fputs($fp, $text);
fclose($fp);
}


function show_mess()
{
   global $base, $MessOnScreen;

   $file = file($base);
   $file = array_reverse($file);

   echo "<table>";

   if(sizeof($file) < $MessOnScreen) $MessOnScreen = sizeof($file);
 
   for ($i = 0; $i < $MessOnScreen; $i++)
   {
       $mess = explode("^^",$file[$i]);
 
       ?>
       <tr>
         <td>
          <p>Написал:
          <? echo "<a href='mailto:".$mess[1]."'>".$mess[0]."</a>";
          echo "<br>";
          echo $mess[2]; ?>
         </td>
         <td>
         <p><?=$mess[3];?></td>
         </tr>
       <?
   }
   echo "</table></td>";
}
?>

===========================================

config.php
<?
$base = "base.txt";

$MessOnScreen = 10;


Вроде всё храниться в файле base.txt...

Автор: baklan 9.9.2004, 20:07
ИМХО, не парься, сделай на Мускуле - там проще!

Автор: Aliance 14.9.2004, 23:23
baklan
Ответить так - проще всего. Нужно разбираться, разбираться во всем, а не отступать от проблем. У меня сервер не поддерживает MySQL!

Автор: Sardar 15.9.2004, 00:07
Это очень простой способ хранения мессаг, самый хреновый одним словом smile.gif
Попробую поюзать .dbf(dBase) таблицы, не супер, но на безрыбье и рак рыба. Мемо поля не подерживаются, храни ссылки на внешние файлы - самый простой способ. В результате один .dbf и куча файлов мессаг, удаляешь запись с файлом месаги. А вобще к проблеме подходят с точным описанием что будешь делать больше всего, какие операции можно сделать ресурсоемкими в пользу других, и почитать немного о работе с файлами.

Не плохой способ, но требующий чуть больше кодинга: сделай файл со смещениями и файл с данными, смещения указывают на блоки данных. Каждый блок данных это пара байтов "длина блока" и дальше данные. Положение смещения также указывает положение мессаги в ряду. Если у блока нет смечения, то он не находится(удален). Новые/редактируемые мессаги пишем в конец файла и правим смещение. Минусы подхода: нужно регулярно чистить файл от мусора.

Дабы все это дело(смещения и т.д.) не хранить текстом пользуйся функцией pack

Автор: Aliance 15.9.2004, 18:15
Sardar
Прочёл 1 предложение и уже упал наповал smile.gif))
Я в php может 1% понимаю и все)) Мне б разжевать и в рот положить - вот это бы было гуд))

Автор: Sardar 15.9.2004, 20:15
Скачай пару гостевых не требующих БД, посмотри сорцы. Вообще поднималась идея создать простенькую БД на PHP, поищи здесь.

Автор: IZ@TOP 15.9.2004, 20:48
Aliance
Жди статью о создании гостевой книги. На днях будет в "То что должне знать каждый о HYH/@/

Автор: Aliance 15.9.2004, 21:01
Sardar
Попробую...
IZ@TOP
Ок.

Я просто хочу сам в этом разобраться, не скачивать...))

Автор: arial 15.9.2004, 21:36
Цитата(Aliance @ 15.9.2004, 22:01)
Я просто хочу сам в этом разобраться, не скачивать...))

А вот это ты зря!
На чужих сорцах учатся.
Много интересного из них можно почерпнуть.

Автор: Aliance 16.9.2004, 15:17
arial
Я не говорю, что нельзя скачивать, а говорю, что для меня неподходит скачивание и "тупая" установка таких книг...А так, я много раз скачивал скрипт, разбирался и свой писал...

Автор: IZ@TOP 16.9.2004, 23:42
Aliance
А при чем тут качать чужое? В статье понятным образом описывается создание гостевой книги и рассматривается большая часть аспектов которые необходимо понимать чтобы написать нечто подобное. Во всяком случае так задумано.

Автор: S.A.P. 17.9.2004, 08:26
Aliance
Тебе нужно защиту хотябы простенькую поставить, чтобы хоть теги нельзя было вставлять.

Автор: Aliance 17.9.2004, 13:52
IZ@TOP
Я не про это...))
Perchilla
Научите smile.gif Я в php, как в балете... biggrin.gif

Автор: Ignat 17.9.2004, 14:38
Простите, что даю ссылки на мануал, но в двух словах про защиту не расскажешь
http://ru.php.net/manual/ru/function.htmlspecialchars.php
http://ru.php.net/manual/ru/function.addslashes.php
http://ru.php.net/manual/ru/function.strip-tags.php
http://ru.php.net/manual/ru/print/configuration.directives.php#ini.register-globals

Если что непонятно - спрашивай.

Автор: Aliance 17.9.2004, 14:59
Ignat
Пасип, сначало с этим разберемся...потом и вопросы, уверен будут))

Автор: IZ@TOP 21.9.2004, 16:53
Aliance
Зайди в "То что должен знать кждый о РНР", там моя статья есть - почитай.
Добавлено @ 16:54
Цитата(Aliance @ 17.9.2004, 14:52)
Научите  Я в php, как в балете...

Моя стать как раз на таких и рассчиатан.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)