Урок 6. Простейшая гостевая книга
Прислано AMD на Сентябрь 28 2011 01:20:35
сегодня использця уже полученные знания создадим простейшую гостевую книгу



первым делом создадим файл test2.dat



взять уже готовый файл можете тут

http://allmustdie.citadelchaos.ru/uroki/test2.dat




далее код гостевой (файл должен называться 5.php или переименуйте ссылку в
форме на свое имя



 
<h2>Гостевая книга</h2>
<form method="POST" action="5.php">
Имя<input type="text" name="T1" size="20"></p>
<p><span lang="en-us">E-mail</span><input type="text" name="T2" size="20"></p>
<p><textarea rows="7" name="S1" cols="29"></textarea></p>
<p><input type="submit" value="Послать" name="B1"></p>
</form>


<?
$find[] = "'\r\n'";
$replace[] = "<br>";

if(preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $T2))
{
if($T1<>"")
{
$old_db = file("test2.dat");
$new_db = fopen("test2.dat", "w");
$S1 = preg_replace($find,$replace,$S1);
$idtime=time();

fwrite($new_db,"$idtime|$T1|$T2|$S1|\n");

foreach($old_db as $old_db_line){
$old_db_arr = explode("|", $old_db_line);
fwrite($new_db,"$old_db_line");
}
fclose($new_db);
}

}
else
{
if($T1<>"")
echo "<h2>Поле email заполнено неверно!</h2>";
}

$cat_line = file("test2.dat");
foreach($cat_line as $line){
$cat = explode("|", $line);
echo "<hr><font color=red><b>",$cat[1],"</b></font><br><i><font color=green>",$cat[2],"</font></i><br> ",$cat[3];

if($id==$cat[0])
{
$imya=$cat[1];
$mulo=$cat[2];
$posttext=$cat[3];
}
}

?>








разберем код



 


<h2>Гостевая книга</h2>
<form method="POST" action="5.php">
Имя<input type="text" name="T1" size="20"></p>
<p><span lang="en-us">E-mail</span><input type="text" name="T2" size="20"></p>
<p><textarea rows="7" name="S1" cols="29"></textarea></p>
<p><input type="submit" value="Послать" name="B1"></p>
</form>



в этом коде мы создаем форму для ввода данных в гостевую

поля - Имя, емейл, и Поле для текста.





 


$find[]     = "'\r\n'";
$replace[] = "<br>";






создаем 2 массива. они нам понадобятся что бы в тексте поста пользователя
заменять символы конца строки на символ <br> - хтмл код новой строки. если
этого не сделать, то мы нарушим структуру нашей базы. ведь в комментарии
пользователя не одна строка а значит вместо того что бы для каждой записи
использовалась бы одна строка у нас будет несколько строк. и структура базы
потечет.





 



if(preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $T2))
{





Т2 - это поле в которое вводится емейл. и мы проверяем правильность заполнения
этого поля. для этго используется функция preg_match. первым параметров у этой
функции идет маска вводжа. вторым сама переменная с введенным текстом, который
и проверяется по этой маске.



 


if($T1<>"")
{
$old_db = file("test2.dat");
$new_db = fopen("test2.dat", "w");
$S1 = preg_replace($find,$replace,$S1);
$idtime=time();

fwrite($new_db,"$idtime|$T1|$T2|$S1|\n");

foreach($old_db as $old_db_line){
$old_db_arr = explode("|", $old_db_line);
fwrite($new_db,"$old_db_line");
}
fclose($new_db);
}

}



проверяем если при обновлении страницы поле Т1 непустое (имя пользователя) то
выполняем действия внутки условия (проверку не пустомы поля емейла - выше).



$old_db = file("test2.dat");

октрываем файл с записями и считываем его



$new_db = fopen("test2.dat", "w");

отрываем файл для записи + очищаем его



$S1 = preg_replace($find,$replace,$S1);

S1 -комментарий пользователя. как я говорил выше. мы заменяем коды конца
строки на символы новой строки хтмл.



$idtime=time();

создаем переменную в которую записываем текущее время. он будет служить ID
записи. в данный момент над это не нужно. но мы заранее это делаем т.к. когда
будем делать админку то понадобится для редоктирования записей. но ней будут
искаться записи



fwrite($new_db,"$idtime|$T1|$T2|$S1|\n");

записываем доную запись в базу.



foreach($old_db as $old_db_line){

$old_db_arr = explode("|", $old_db_line);

fwrite($new_db,"$old_db_line");

}

записываем старые записи в базу. они записываются ПОСЛЕ новой.



fclose($new_db);

закрываем файл. записб закончена











 


else
{
if($T1<>"")
echo "<h2>Поле email заполнено неверно!</h2>";
}

$cat_line = file("test2.dat");
foreach($cat_line as $line){
$cat = explode("|", $line);
echo "<hr><font color=red><b>",$cat[1],"</b></font><br><i><font color=green>",$cat[2],"</font></i><br> ",$cat[3];

if($id==$cat[0])
{
$imya=$cat[1];
$mulo=$cat[2];
$posttext=$cat[3];
}
}

?>





if($T1<>"")

echo "<h2>Поле email заполнено неверно!</h2>";



тут если поле емейл заполнено не верно то выводится сообщение об этом. и
запись не производится

ниже идет обычный вывод на экран записей из базы. подробно это мы разбирали
уроком раньше.



собственно сама гостевая

http://allmustdie.citadelchaos.ru/uroki/5.php


можете пробовать у себя или у меня (у себя лучше по причине того что лучше
разберетесь в коде) +++