Форум клуба WAP мастеров: пишем гостевую - Форум клуба WAP мастеров

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

пишем гостевую гостевая на php файлах Оценка: -----

#1 Пользователь офлайн   Eddie 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 76
  • Регистрация: 19 февраля 09
  • Пол:Мужчина

Отправлено 13 марта 2009 - 16:15

Сообщения будут храниться в файлах, которые расположены в директории RECORDS (позже мы разработаем вариант гостевой книги, основанный на хранении сообщений в базе данных). Код размещен в двух файлах: index.php (отображение сообщений) и addrec.php (добавление сообщений, их проверка и запись в файл).

Итак, создайте файл addrec.php и в той же директории, в которой расположен этот файл создайте директорию RECORDS.

Сначала проверяем, ввел ли пользователь данные и правильно ли он их ввел:

<?
 $error = "";
 $action = $HTTP_POST_VARS["action"];
 if (!empty($action)) 
 {
 $name = trim($name);
 $msg = trim($msg);
 if (empty($msg)) // если не введено сообщение
 {
 $action = "";
 $error = $error."<LI>Вы не ввели сообщение\n";
 }
 if (empty($name)) // если не введено имя
 {
 $action = "";
 $error = $error."<LI>Вы не ввели имя\n";
 }
 if (!empty($email))
 /* если введен e-mail, то проверяем с помощью регулярного выражения
 правильность ввода */
 {
 if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
 {
 $action = "";
 $error = $error."<LI> Неверно введен е-mail.&nbsр Введите e-mail
 в виде <i>vsem@pizdec.ru</i> \n";
 }
 }


Теперь обрабатываем введенный пользователем текст функциями удаления HTML-тегов и обратных слешей:

$name = substr($HTTP_POST_VARS["name"],0,32);
 $name = htmlspecialchars(stripslashes($name)); // обрабатываем имя
 $city = substr($HTTP_POST_VARS["city"],0,32);
 $city = htmlspecialchars(stripslashes($city)); // обрабатываем город
 $email = substr($HTTP_POST_VARS["email"],0,32);
 $email = htmlspecialchars(stripslashes($email)); // обрабатываем e-mail
 $url = substr($HTTP_POST_VARS["url"],0,36);
 $url = htmlspecialchars(stripslashes($url)); // обрабатываем url-адрес
 $msg = substr($HTTP_POST_VARS["msg"],0,1024);
 $msg = htmlspecialchars(stripslashes($msg)); // обрабатываем сообщение


В нашей гостевой книге поддерживается полужирное начертание, курсив, подчеркивание, верхние и нижние индексы. Для того, чтобы пользователь мог, к примеру, выделить блок текста в сообщении курсивом, его необходимо заключить в теги <i></i> и т.д. Поэтому для после того, как текст введен, нужно заменить эти искусственные теги на их реальное HTML-представление:

if (empty($error)) // если ошибок нет, обрабатываем сообщение
 {
	 $msg = nl2br($msg);
  $msg = str_replace("","<u>",$msg);
  $msg = str_replace("[U]","<u>",$msg);
  $msg = str_replace("","<i>",$msg);
  $msg = str_replace("[I]","<i>",$msg);
  $msg = str_replace("","<B>",$msg);
  $msg = str_replace("[B]","<B>",$msg);
  $msg = str_replace("[sub]","<SUB>",$msg);
  $msg = str_replace("[SUB]","<SUB>",$msg);
  $msg = str_replace("[/sub][sup]","<SUP>",$msg);
  $msg = str_replace("[SUP]","<SUP>",$msg);
  $msg = str_replace("","</u>",$msg);
  $msg = str_replace("[/U]","</u>",$msg);
  $msg = str_replace("","</i>",$msg);
  $msg = str_replace("[/I]","</i>",$msg);
  $msg = str_replace("","</B>",$msg);
  $msg = str_replace("[/B]","</B>",$msg);
  $msg = str_replace("","</SUB>",$msg);
  $msg = str_replace("[/sub]","</SUB>",$msg);
  $msg = str_replace[/sup][sup]("[/sup]","</SUP>",$msg);
  $msg = str_replace("[/sup]","</SUP>",$msg);
  $msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a
  href=\\2>\\2</a>\\3",$msg);
  $msg = str_replace("\n"," ",$msg);
  $msg = str_replace("\r"," ",$msg);


Открываем файл и добавляем в него, введенную пользователем информацию:

/* создаем файл с именем вида "rec.+время добавления сообщения" */
 $file = fopen("records/rec.".time(),"w");
 // записываем информацию в файл, по одной строчке на каждое поле
 fputs($file,$name."\n");
 fputs($file,$city."\n");
 fputs($file,$email."\n");
 fputs($file,$url."\n");
 fputs($file,$msg."\n");
 // закрываем файл
 fclose($file);


Вызываем скрипт index.php, ответственный за отображение сообщений:

print "<HTML><HEAD>\n";
 print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n";
 print "</HEAD></HTML>\n";
 }
 }


Добавляем код вывода сообщений об ошибках и HTML-код формы добавления сообщения:

if (empty($action))
 {
 <?
 <HTML>
 <HEAD>
 <TITLE>Гостевая книга - добавление записи</TITLE>
 </HEAD&tg;
 <BODY>
 <H3>
 <? print "<center>"; ?> 
 <font color=#1E90FF>Добавление записи</font>
 </H3>
 <?
 if (!empty($error))
 /* если есть ошибки, выводим сообщение об ошибках */
 {
 print "<P><font color=green>Во время добавления записи произошли 
 следующие ошибки:</font></P>\n";
 print "<UL>\n";
 print $error;
 print "</UL>\n";
 }
 ?>
 
 <center>
 <table width=1 border=0>
 <form action=addrec.php method=post>
 <input type=hidden name=action value=post>
 <tr>
 <td width=50%>Имя:<font color=red><sup>*</sup><font></td>
 <td align=right>
 <input type=text name=name maxlength=32 value='<? echo $name; ?>'>
 </td>
 </tr>
 <tr>
 <td width=50%>Город:</td>
 <td align=right>
 <input type=text name=city maxlength=32 value='<? echo $city;; ?>'>
 </td>
 </tr>
 <tr>
 <td width=50%>E-Mail:</td>
 <td align=right>
 <input type=text name=email maxlength=32 value='<? echo $email; ?>'>
 </td>
 </tr>
 <tr>
 <td width=50%>URL:</td>
 <td align=right>
 <input type=text name=url maxlength=36 value='<? echo $url; ?>'>
 </td>
 </tr>
 <tr>
 <td colspan=2>Сообщение:<font color=red<sup>*</sup></font><br>
 <textarea cols=50 rows=8 name=msg><? echo $url; ?>
 </textarea>
 </td>
 </tr>
 <tr>
 <td colspan=2><input type=submit value='Добавить'></td>
 </tr>
 </form>
 <tr>
 <td colspan=2><font color=red><sup>*</sup></font> - поля,
 обязательные для заполнения
 </td><td align=left>
 </table>
 </center>
 </BODY>
 </HTML>
 <?
 }
 ?>

После окончания работы с кодом, размещенным в файле addrec.php, форма для добавления сообщений должна иметь следующий вид:
Добавление записиИмя:*
Город:
E-Mail:
URL:
Собщение:*


* - поля, обязательные для заполнения

Листинг файла index.php, используемого для отображения сообщений:

<HTML>
 <HEAD>
 <TITLE>Гостевая книга</TITLE>
 </HEAD>
 <BODY>
 <?
 /* открываем директорию и считываем из нее файлы */
 $dir_rec = dir("records");
 $i = 0;
 while($entry = $dir_rec->read())
 {
 if (substr($entry,0,3)=="rec")
 {
 $names[$i]=substr($entry,4);
 $i++;
 }
 }
 $dir_rec->close(); // закрываем директорию
 @rsort($names); // сортируем файлы
 /* определяем очередность сообщений и выводим их */
 $count = $i;
 $count1 = $count;
 if (empty($start))
 {
 $start = 0;
 }
 $start = intval($start);
 if ($start < 0)
 {
 $start = 0;
 }
 print "<center>";
 if ($count > $start + 10) $count = $start + 10;
 if ($start != 0)
 {
 print "<A href=index.php?start=".($start - 10).">Предыдущие</A>";
 }
 print "<a href=addrec.php>Добавить запись</A>";
 if ($count1 > $start + 10)
 {
 print "<A href=index.php?start=".($start + 10).">Следующие</A> \n";
 }
 print "</center><br>";
 /* выводим все сообщения в цикле */
 for ($i = $start; $i < $count; $i++)
 {
 $entry = $names[$i];
 $data = file("records/rec.".$entry);
 $date = $entry;
 $name = trim($data[0]);
 $city = trim($data[1]);
 $email = trim($data[2]);
 $url = trim($data[3]);
 $msg = trim($data[4]);
 /* поле, в которое администратор может добавить ответ */
 $answer = trim($data[5]);
 print "<table border=0 cellspacing=0 cellpadding=2 width=100%>
 <tr bgcolor=#F0F0F0><td>&nbsр;";
 print "<b>$name</b>&nbsр;";
 if (!empty($city)) print "$city&nbsр";
 if (!empty($email)) print "<a href=mailto:$email><i>$email</i></A>\n";
 if (!empty($url)) print "<a href=$url>$url</a>";
 print "</td><td align=right>".date("<b>d-m-Y</b> H - i, $date)."
 </td></tr>\n<tr><td colspan=2>\n";
 print "<P>".$msg."</P>\n";
 if (!empty($answer)) // если администратор что-то ответил
 { print "<P><font color=#1E90FF>admin:&nbsр$answer</font></P>\n";
 } 
 print "</td></tr></table>\n<br><br>\n";
 }
 print "<center>";
 if ($start != 0)
 {
 print "<A href=index.php?start=".($start - 10).">Предыдущие</A>";
 }
 print "<a href=addrec.php>Добавить запись</A>";
 if ($count1 > $start + 10)
 {
 print "<A href=index.php?start=".($start + 10).">Следующие</A> \n";
 }
 print "</center>";
 ?>
 </BODY>
 </HTML>


Гостевая книга написана.
0

#2 Пользователь офлайн   Kasper 

  • Местное привидение
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 519
  • Регистрация: 24 ноября 06
  • Пол:Мужчина

Отправлено 13 марта 2009 - 16:18

Очень знакомая статья. Автор Дионисий? Укажи автора обязательно.
Весь код оформи в специальные теги.
С уважением, Михаил
0

#3 Пользователь офлайн   Eddie 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 76
  • Регистрация: 19 февраля 09
  • Пол:Мужчина

Отправлено 14 марта 2009 - 07:30

я тут нечего не знаю как оформлять.А вот это я скачал в одной сети(teleos.ru) и автор там указан небыл.
0

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей