
<h1 class=p1>Пишем гостевую книгу на PHP (вариант на файлах)</h1>
<br>
<br>

<p class=text>Сейчас мы разработаем приложение "Гостевая книга на PHP".</p>
<p class=text>Сообщения будут храниться в файлах, которые расположены в директории <b>RECORDS</b> (позже мы разработаем вариант гостевой книги, основанный на хранении сообщений в базе данных). Код размещен в двух файлах: <b>index.php</b> (отображение сообщений) и <b>addrec.php</b> (добавление сообщений, их проверка и запись в файл).</p>
<p class=text>Итак, создайте файл addrec.php и в той же директории, в которой расположен этот файл создайте директорию <b>RECORDS</b>.</p>
<a name=1></a>
<p class=text>Сначала проверяем, ввел ли пользователь данные и правильно ли он их ввел:</p>
<blockquote><pre>
<em class=red>&lt;?</em>
  <b>$error</b><em class=gr> = </em>""<em class=gr>;</em>
  <b>$action</b><em class=gr> = </em><b>$HTTP_POST_VARS</b><em class=gr>[</em>"action"<em class=gr>];</em>
  <b>if</b><em class=gr> (</em><b>!empty</b><em class=gr>(</em><b>$action</b><em class=gr>)) 
  {</em>
    <b>$name</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$name</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$msg</b><em class=gr>);</em>
      <b>if</b><em class=gr> (</em><b>empty</b><em class=gr>(</em><b>$msg</b><em class=gr>))</em><em class=comnt> // если не введено сообщение</em>
      <em class=gr>{</em>
        <b>$action</b><em class=gr> = </em>""<em class=gr>;</em>
        <b>$error</b><em class=gr> = </em><b>$error</b>."&lt;LI&gt;Вы не ввели сообщение\n"<em class=gr>;
      }</em>
      <b>if</b><em class=gr> (</em><b>empty</b><em class=gr>(</em><b>$name</b><em class=gr>))</em><em class=comnt> // если не введено имя</em>
      <em class=gr>{</em>
        <b>$action</b><em class=gr> = </em>""<em class=gr>;</em>
        <b>$error</b><em class=gr> = </em><b>$error</b>."&lt;LI&gt;Вы не ввели имя\n"<em class=gr>;
      }</em>
      <b>if</b><em class=gr> (</em><b>!empty</b><em class=gr>(</em><b>$email</b><em class=gr>))</em>
      <em class=comnt>/* если введен e-mail, то проверяем с помощью регулярного выражения
      правильность ввода */</em>
      <em class=gr>{</em>
        <b>if</b><em class=gr> (</em><b>!preg_match</b><em class=gr>(</em>"/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", <b>$email</b><em class=gr>))
        {</em>
          <b>$action</b><em class=gr> = </em>""<em class=gr>;</em>
          <b>$error</b><em class=gr> = </em><b>$error</b>."&lt;LI&gt; Неверно введен е-mail.&nbsр Введите e-mail
          в виде &lt;i&gt;softtime@softtime.ru&lt;/i&gt; \n"<em class=gr>;
        }
      }</em>
</pre></blockquote>
<a name=2></a>
<p class=text>Теперь обрабатываем введенный пользователем текст функциями удаления HTML-тегов и обратных слешей:</p>
<blockquote><pre>
<b>$name</b><em class=gr> = </em><b>substr</b><em class=gr>(</em><b>$HTTP_POST_VARS</b>["name"],0,32<em class=gr>);</em>
<b>$name</b><em class=gr> = </em><b>htmlspecialchars</b><em class=gr>(</em><b>stripslashes</b><em class=gr>(</em><b>$name</b><em class=gr>));</em><em class=comnt> // обрабатываем имя</em>
<b>$city</b><em class=gr> = </em><b>substr</b><em class=gr>(</em><b>$HTTP_POST_VARS</b>["city"],0,32<em class=gr>);</em>
<b>$city</b><em class=gr> = </em><b>htmlspecialchars</b><em class=gr>(</em><b>stripslashes</b><em class=gr>(</em><b>$city</b><em class=gr>));</em><em class=comnt> // обрабатываем город</em>
<b>$email</b><em class=gr> = </em><b>substr</b><em class=gr>(</em><b>$HTTP_POST_VARS</b>["email"],0,32<em class=gr>);</em>
<b>$email</b><em class=gr> = </em><b>htmlspecialchars</b><em class=gr>(</em><b>stripslashes</b><em class=gr>(</em><b>$email</b><em class=gr>));</em><em class=comnt> // обрабатываем e-mail</em>
<b>$url</b><em class=gr> = </em><b>substr</b><em class=gr>(</em><b>$HTTP_POST_VARS</b>["url"],0,36<em class=gr>);</em>
<b>$url</b><em class=gr> = </em><b>htmlspecialchars</b><em class=gr>(</em><b>stripslashes</b><em class=gr>(</em><b>$url</b><em class=gr>));</em><em class=comnt> // обрабатываем url-адрес</em>
<b>$msg</b><em class=gr> = </em><b>substr</b><em class=gr>(</em><b>$HTTP_POST_VARS</b>["msg"],0,1024<em class=gr>);</em>
<b>$msg</b><em class=gr> = </em><b>htmlspecialchars</b><em class=gr>(</em><b>stripslashes</b><em class=gr>(</em><b>$msg</b><em class=gr>));</em><em class=comnt> // обрабатываем сообщение</em>
</pre></blockquote>
<p class=text>В нашей гостевой книге поддерживается полужирное начертание, курсив, подчеркивание, верхние и нижние индексы. Для того, чтобы пользователь мог, к примеру, выделить блок текста в сообщении курсивом, его необходимо заключить в теги &lt;i&gt;&lt;/i&gt; и т.д. Поэтому для после того, как текст введен, нужно заменить эти искусственные теги на их реальное HTML-представление:</p>
<blockquote><pre>
<b>if</b><em class=gr> (</em><b>empty</b><em class=gr>(</em><b>$error</b><em class=gr>))</em><em class=comnt> // если ошибок нет, обрабатываем сообщение</em>
  <em class=gr>{</em>
    <b>$msg</b><em class=gr> = </em><b>nl2br</b><em class=gr>(</em><b>$msg</b></b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[u]","&lt;u&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[U]","&lt;u&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[i]","&lt;i&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[I]","&lt;i&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[b]","&lt;B&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[B]","&lt;B&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[sub]","&lt;SUB&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[SUB]","&lt;SUB&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[sup]","&lt;SUP&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[SUP]","&lt;SUP&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/u]","&lt;/u&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/U]","&lt;/u&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/i]","&lt;/i&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/I]","&lt;/i&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/b]","&lt;/B&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/B]","&lt;/B&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/SUB]","&lt;/SUB&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/sub]","&lt;/SUB&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/SUP]","&lt;/SUP&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"[/sup]","&lt;/SUP&gt;",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>eregi_replace</b><em class=gr>(</em>"(.*)\\[url\\](.*)\\[/url\\](.*)","\\1&lt;a
                       href=\\2&gt;\\2&lt;/a&gt;\\3",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"\n"," ",<b>$msg</b><em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>str_replace</b><em class=gr>(</em>"\r"," ",<b>$msg</b><em class=gr>);</em>
</pre></blockquote>
<a name=3></a>
<p class=text>Открываем файл и добавляем в него, введенную пользователем информацию:</p>
<blockquote><pre>
    <em class=comnt>/* создаем файл с именем вида "rec.+время добавления сообщения" */</em>
    <b>$file</b><em class=gr> = </em><b>fopen</b><em class=gr>(</em>"records/rec.".<b>time</b>(),"w"<em class=gr>);</em>
    <em class=comnt>// записываем информацию в файл, по одной строчке на каждое поле</em>
    <b>fputs</b><em class=gr>(</em><b>$file</b>,<b>$name</b>."\n"<em class=gr>);</em>
    <b>fputs</b><em class=gr>(</em><b>$file</b>,<b>$city</b>."\n"<em class=gr>);</em>
    <b>fputs</b><em class=gr>(</em><b>$file</b>,<b>$email</b>."\n"<em class=gr>);</em>
    <b>fputs</b><em class=gr>(</em><b>$file</b>,<b>$url</b>."\n"<em class=gr>);</em>
    <b>fputs</b><em class=gr>(</em><b>$file</b>,<b>$msg</b>."\n"<em class=gr>);</em>
    <em class=comnt>// закрываем файл</em>
    <b>fclose</b><em class=gr>(</em><b>$file</b><em class=gr>);</em>
</pre></blockquote>
<a name=4></a>
<p class=text>Вызываем скрипт <b>index.php</b>, ответственный за отображение сообщений:</p>
<blockquote><pre>
  <em class=gr>print</em> "&lt;HTML&gt;&lt;HEAD&gt;\n"<em class=gr>;
  print</em> "&lt;META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'&gt;\n"<em class=gr>;
  print</em> "&lt;/HEAD&gt;&lt;/HTML&gt;\n"<em class=gr>;
  }
  }</em>
</pre></blockquote>
<a name=5></a>
<p class=text>Добавляем код вывода сообщений об ошибках и HTML-код формы добавления сообщения:</p>
<blockquote><pre>
  <b>if</b><em class=gr> (</em><b>empty</b><em class=gr>(</em><b>$action</b><em class=gr>))
  {</em>
    <em class=red>&lt;?</em>
    &lt;HTML&gt;
    &lt;HEAD&gt;
    &lt;TITLE&gt;Гостевая книга - добавление записи&lt;/TITLE&gt;
    &lt;/HEAD&tg;
    &lt;BODY&gt;
    &lt;H3&gt;
      <em class=red>&lt;?</em><em class=gr> print</em> "&lt;center&gt;"; <em class=red>?&gt;</em> 
      &lt;font color=#1E90FF&gt;Добавление записи&lt;/font&gt;
    &lt;/H3&gt;
    <em class=red>&lt;?</em>
    <b>if</b><em class=gr> (</em><b>!empty</b><em class=gr>(</em><b>$error</b><em class=gr>))</em>
    <em class=comnt>/* если есть ошибки, выводим сообщение об ошибках */</em>
    <em class=gr>{
      print</em> "&lt;P&gt;&lt;font color=green&gt;Во время добавления записи произошли 
      следующие ошибки:&lt;/font&gt;&lt;/P&gt;\n"<em class=gr>;
      print</em> "&lt;UL&gt;\n"<em class=gr>;
      print</em><b> $error</b><em class=gr>;
      print</em> "&lt;/UL&gt;\n"<em class=gr>;
    }</em>
    <em class=red>?&gt;</em>
    &lt;!-- пишем HTML-код формы добавления сообщений !--&gt;
    &lt;center&gt;
     &lt;table width=1 border=0&gt;
     &lt;form action=addrec.php method=post&gt;
     &lt;input type=hidden name=action value=post&gt;
    &lt;tr&gt;
     &lt;td width=50%&gt;Имя:&lt;font color=red&gt;&lt;sup&gt;*&lt;/sup&gt;&lt;font&gt;&lt;/td&gt;
     &lt;td align=right&gt;
       &lt;input type=text name=name maxlength=32 value='<em class=red>&lt;?</em><em class=gr> echo </em><b>$name</b><em class=gr>;</em> <em class=red>?&gt;</em>'&gt;
     &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td width=50%&gt;Город:&lt;/td&gt;
      &lt;td align=right&gt;
        &lt;input type=text name=city maxlength=32 value='<em class=red>&lt;?</em><em class=gr> echo </em><b>$city;</b><em class=gr>;</em> <em class=red>?&gt;</em>'&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td width=50%&gt;E-Mail:&lt;/td&gt;
      &lt;td align=right&gt;
        &lt;input type=text name=email maxlength=32 value='<em class=red>&lt;?</em><em class=gr> echo </em><b>$email</b><em class=gr>;</em> <em class=red>?&gt;</em>'&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td width=50%&gt;URL:&lt;/td&gt;
      &lt;td align=right&gt;
        &lt;input type=text name=url maxlength=36 value='<em class=red>&lt;?</em><em class=gr> echo </em><b>$url</b><em class=gr>;</em> <em class=red>?&gt;</em>'&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td colspan=2&gt;Сообщение:&lt;font color=red&lt;sup&gt;*&lt;/sup&gt;&lt;/font&gt;&lt;br&gt;
        &lt;textarea cols=50 rows=8 name=msg&gt;<em class=red>&lt;?</em><em class=gr> echo </em><b>$url</b><em class=gr>;</em> <em class=red>?&gt;</em>
        &lt;/textarea&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td colspan=2&gt;&lt;input type=submit value='Добавить'&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/form&gt;
  &lt;tr&gt;
    &lt;td colspan=2&gt;&lt;font color=red&gt;&lt;sup&gt;*&lt;/sup&gt;&lt;/font&gt; - поля,
      обязательные для заполнения
    &lt;/td&gt;&lt;td align=left&gt;
  &lt;/table&gt;
  &lt;/center&gt;
  &lt;/BODY&gt;
  &lt;/HTML&gt;
  <em class=red>&lt;?</em>
   <em class=gr>}</em>
  <em class=red>?&gt;</em>
</pre></blockquote>
<a name=6></a>
<p class=prim>После окончания работы с кодом, размещенным в файле addrec.php, форма для добавления сообщений должна иметь следующий вид:</p>
<hr>
<H3 align=center><font color=#1E90FF>Добавление записи</font></H3>
<center>
<table width=1 border=0>
  <tr>
   <td width=50%>Имя:<font color=red><sup>*</sup></font></td>
   <td align=right><input type=text name=name maxlength=32 value=" "></td>
  </tr>
  <tr>
    <td width=50%>Город:</td>
    <td align=right><input type=text name=city maxlength=32 value=" "></td>
  </tr>
  <tr>
    <td width=50%>E-Mail:</td>
    <td align=right><input type=text name=email maxlength=32 value=" "></td>
  </tr>
  <tr>
    <td width=50%>URL:</td>
    <td align=right><input type=text name=url maxlength=36 value=" "></td>
  </tr>
  <tr>
    <td colspan=2>Сообщение:<font color=red<sup>*</sup></font><br>
      <textarea cols=50 rows=8 name=msg></textarea>
    </td>
  </tr>
  <tr>
    <td colspan=2><input type=submit value='Добавить'></td>
  </tr>
 <tr>
   <td colspan=2><font color=red><sup>*</sup></font> - поля, обязательные для заполнения</td>
 <td align=left></td>
</table>
</center><hr>
<p class=prim>Листинг файла <b>index.php</b>, используемого для отображения сообщений:</p>
<blockquote><pre>
  &lt;HTML&gt;
  &lt;HEAD&gt;
  &lt;TITLE&gt;Гостевая книга&lt;/TITLE&gt;
  &lt;/HEAD&gt;
  &lt;BODY&gt;
  <em class=red>&lt;?</em>
  <em class=comnt>/* открываем директорию и считываем из нее файлы */</em>
  <b>$dir_rec</b><em class=gr> = </em><b>dir</b><em class=gr>(</em>"records"<em class=gr>);</em>
  <b>$i</b><em class=gr> = </em>0<em class=gr>;</em>
  <b>while</b><em class=gr>(</em><b>$entry</b><em class=gr> = </em><b>$dir_rec</b>-&gt;<b>read</b><em class=gr>())
  {</em>
    <b>if</b><em class=gr> (</em><b>substr</b><em class=gr>(</em><b>$entry</b>,0,3<em class=gr>)</em>=="rec"<em class=gr>)
    {</em>
      <b>$names</b>[<b>$i</b>]<em class=gr>=</em><b>substr</b><em class=gr>(</em><b>$entry</b>,4<em class=gr>);</em>
      <b>$i</b>++<em class=gr>;
    }
  }</em>
  <b>$dir_rec</b>-><b>close</b><em class=gr>();</em><em class=comnt> // закрываем директорию</em>
  <b>@rsort</b><em class=gr>(</em><b>$names</b><em class=gr>);</em><em class=comnt> // сортируем файлы</em>
  <em class=comnt>/* определяем очередность сообщений и выводим их */</em>
  <b>$count</b><em class=gr> = </em><b>$i</b><em class=gr>;</em>
  <b>$count1</b><em class=gr> = </em><b>$count</b><em class=gr>;</em>
  <b>if</b><em class=gr> (</em><b>empty</b><em class=gr>(</em><b>$start</b><em class=gr>))
  {</em>
    <b>$start</b><em class=gr> = </em>0<em class=gr>;
  }</em>
  <b>$start</b><em class=gr> = </em><b>intval</b><em class=gr>(</em><b>$start</b><em class=gr>);</em>
  <b>if</b><em class=gr> (</em><b>$start</b> < 0<em class=gr>)
  {</em>
    <b>$start</b><em class=gr> = </em>0<em class=gr>;
  }
  print </em>"&lt;center&gt;"<em class=gr>;</em>
  <b>if</b><em class=gr> (</em><b>$count</b> &gt; <b>$start</b> + 10<em class=gr>)</em> <b>$count</b><em class=gr> = </em><b>$start</b> + 10<em class=gr>;</em>
  <b>if</b><em class=gr> (</em><b>$start</b> != 0<em class=gr>)
  {
    print</em> "&lt;A href=index.php?start=".<em class=gr>(</em><b>$start</b> - 10<em class=gr>)</em>."&gt;Предыдущие&lt;/A&gt;"<em class=gr>;
  }
  print</em> "&lt;a href=addrec.php&gt;Добавить запись&lt;/A&gt;"<em class=gr>;</em>
  <b>if</b><em class=gr> (</em><b>$count1</b> &gt; <b>$start</b> + 10<em class=gr>)
  {
    print</em> "&lt;A href=index.php?start=".<em class=gr>(</em><b>$start</b> + 10<em class=gr>)</em>."&gt;Следующие&lt;/A&gt; \n"<em class=gr>;
  }
  print</em> "&lt;/center&gt;&lt;br&gt;"<em class=gr>;</em>
  <em class=comnt>/* выводим все сообщения в цикле */</em>
  <b>for</b><em class=gr> (</em><b>$i</b><em class=gr> = </em><b>$start</b><em class=gr>;</em> <b>$i</b> &lt; <b>$count</b><em class=gr>;</em> <b>$i</b>++<em class=gr>)
  {</em>
    <b>$entry</b><em class=gr> = </em><b>$names</b>[<b>$i</b>]<em class=gr>;</em>
    <b>$data</b><em class=gr> = </em><b>file</b><em class=gr>(</em>"records/rec.".<b>$entry</b><em class=gr>);</em>
    <b>$date</b><em class=gr> = </em><b>$entry</b><em class=gr>;</em>
    <b>$name</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$data</b>[0]<em class=gr>);</em>
    <b>$city</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$data</b>[1]<em class=gr>);</em>
    <b>$email</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$data</b>[2]<em class=gr>);</em>
    <b>$url</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$data</b>[3]<em class=gr>);</em>
    <b>$msg</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$data</b>[4]<em class=gr>);</em>
    <em class=comnt>/* поле, в которое администратор может добавить ответ */</em>
    <b>$answer</b><em class=gr> = </em><b>trim</b><em class=gr>(</em><b>$data</b>[5]<em class=gr>);
    print</em> "&lt;table border=0 cellspacing=0 cellpadding=2 width=100%&gt;
    &lt;tr bgcolor=#F0F0F0&gt;&lt;td&gt;&nbsр;"<em class=gr>;
    print</em> "&lt;b&gt;<b>$name</b>&lt;/b&gt;&nbsр;"<em class=gr>;</em>
    <b>if</b><em class=gr> (</em><b>!empty</b><em class=gr>(</em><b>$city</b><em class=gr>)) print</em> "<b>$city</b>&nbsр"<em class=gr>;</em>
    <b>if</b><em class=gr> (</em><b>!empty</b><em class=gr>(</em><b>$email</b><em class=gr>)) print</em> "&lt;a href=mailto:<b>$email</b>&gt;&lt;i&gt;<b>$email</b>&lt;/i&gt;&lt;/A&gt;\n"<em class=gr>;</em>
    <b>if</b><em class=gr> (</em><b>!empty</b><em class=gr>(</em><b>$url</b><em class=gr>)) print</em> "&lt;a href=<b>$url</b>&gt;<b>$url</b>&lt;/a&gt;"<em class=gr>;
    print</em> "&lt;/td&gt;&lt;td align=right&gt;".<b>date</b><em class=gr>(</em>"&lt;b&gt;d-m-Y&lt;/b&gt; H - i, <b>$date</b><em class=gr>)</em>."
    &lt;/td&gt;&lt;/tr&gt;\n&lt;tr&gt;&lt;td colspan=2&gt;\n"<em class=gr>;
    print</em> "&lt;P&gt;".<b>$msg</b>."&lt;/P&gt;\n"<em class=gr>;</em>
    <b>if</b><em class=gr> (</em><b>!empty</b><em class=gr>(</em><b>$answer</b><em class=gr>))</em><em class=comnt> // если администратор что-то ответил</em>
    <em class=gr>{
      print</em> "&lt;P&gt;&lt;font color=#1E90FF&gt;admin:&nbsр<b>$answer</b>&lt;/font&gt;&lt;/P&gt;\n"<em class=gr>;
    }   
    print</em> "&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;\n&lt;br&gt;&lt;br&gt;\n"<em class=gr>;
  }
  print</em> "&lt;center&gt;"<em class=gr>;</em>
  <b>if</b><em class=gr> (</em><b>$start</b> != 0<em class=gr>)
  {
    print</em> "&lt;A href=index.php?start=".<em class=gr>(</em><b>$start</b> - 10<em class=gr>)</em>."&gt;Предыдущие&lt;/A&gt;"<em class=gr>;
  }
  print</em> "&lt;a href=addrec.php&gt;Добавить запись&lt;/A&gt;"<em class=gr>;</em>
  <b>if</b><em class=gr> (</em><b>$count1</b> > <b>$start</b> + 10<em class=gr>)
  {
    print</em> "&lt;A href=index.php?start=".<em class=gr>(</em><b>$start</b> + 10<em class=gr>)</em>."&gt;Следующие&lt;/A&gt; \n"<em class=gr>;
  }
  print</em> "&lt;/center&gt;"<em class=gr>;</em>
  <em class=red>?&gt;</em>
  &lt;/BODY&gt;
  &lt;/HTML&gt;
</pre></blockquote>
<p class=text>Гостевая книга написана.</p>
<p class=prim>Если ввести сообщение, то оно отобразится следующим образом:</p>
<a name=0></a>
<center><hr>
<A href=#0>Предыдущие</A>
<a href=#0>Добавить запись</A>
<A href=#0>Следующие</A>
</center><br>
<table border=0 cellspacing=0 cellpadding=2 width=100%>
  <tr bgcolor=#F0F0F0><td>&nbsp;
  <b>авторы</b>&nbsp;
  Нижний Новгород &nbsp;
  <a href="javascript:if(confirm('http://owape.ru/  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://owape.ru/'" tppabs="http://owape.ru/">http://owape.ru</a>
  </td><td align=right><b>20-03-04</b> 15 - 00
  </td></tr>
  <tr><td colspan=2>
  <P>Мы рады приветствовать Вас!</P>
  <P><font color=#1E90FF>admin:&nbsp;</font></P>
  </td></tr></table>
  <br><br>
<center>
<A href=#0>Предыдущие</A>
<a href=#0>Добавить запись</A>
<A href=#0>Следующие</A>
<hr>
</center>
<p class=prim>При неправильном заполнении полей гостевой книги отобразится сообщение об ошибке:</p>
<hr>
<H3 align=center><font color=#1E90FF>Добавление записи</font></H3>
<p align=center><font color=green>Во время добавления записи произошли следующие ошибки:</font></p>
<ul>
  <li>Вы не ввели сообщение</li>
  <li>Вы не ввели имя</li>
  <li>Неверно введен е-mail. Введите e-mail в виде: <i>softtime@softtime.ru</i></li>
</ul>
<center>
<table width=1 border=0>
  <tr>
   <td width=50%>Имя:<font color=red><sup>*</sup></font></td>
   <td align=right><input type=text name=name maxlength=32 value=" "></td>
  </tr>
  <tr>
    <td width=50%>Город:</td>
    <td align=right><input type=text name=city maxlength=32 value=" "></td>
  </tr>
  <tr>
    <td width=50%>E-Mail:</td>
    <td align=right><input type=text name=email maxlength=32 value=" "></td>
  </tr>
  <tr>
    <td width=50%>URL:</td>
    <td align=right><input type=text name=url maxlength=36 value=" "></td>
  </tr>
  <tr>
    <td colspan=2>Сообщение:<font color=red<sup>*</sup></font><br>
      <textarea cols=50 rows=8 name=msg></textarea>
    </td>
  </tr>
  <tr>
    <td colspan=2><input type=submit value='Добавить'></td>
  </tr>
 <tr>
   <td colspan=2><font color=red><sup>*</sup></font> - поля, обязательные для заполнения</td>
 <td align=left></td>
</table>
</center><hr>
