Форум, работающий с базой данных MySQL
Создание нового топика
Для создания нового топика используем следующую форму:
<h3 alignОnter><font color="0000ff">New topic</font></h3>
<p align=right>| <a href="<?php echo $script ?>">Go to topics</a>
| <a href="<?php echo $script ?>?action=register"> Register</a> |
<p align=right><font color="0000ff"> Only registered users may post messages in this forum.</font>
<p><form action="<?php echo $script ?>" name="newtop" method="POST">
<table width`% alignОnter bgcolor="aaaaaa">
<tr><td>
<tr><td><b>Your nick:</b><td><input type="text" name="nick" size >
<tr><td><b>Your password:</b><td><input type="password" name="passwd" size >
<tr><td><b>Topic name:</b><td><input type="text" name="theme" size >
<tr><td colspan=2> <b>Message:</b><p> <textarea cols@ rows§
WRAP="VIRTUAL" name="message"></textarea>
<tr><td colspan=2><input type="hidden" name="action" value="add_new_top">
<tr><td colspan=2><input type="hidden" name="test" value="ok">
<tr><td colspan=2 alignОnter> <br> <input type="submit" name="post" value="Submit"></table>
<?php
Все поля обязательны для заполнения. Пользователь должен ввести свое
имя, под которым он регистрировался в БД и пароль. Скрипт проверяет наличие
их в БД, и если все нормально - помещает сообщение в таблицу topics.
Если же имя и пароль введены неверно - выдается ошибка. Помещать сообщения
могут только зарегистрированные пользователи. Вот как это выглядит:
elseif ($action=="add_new_top") {
connect ();
// Соединяемся с БД.
if ($test) {
// Читаем данные из формы.
$dateЪte ( "Y-m-d H:i:s",mktime ());
$message=htmlspecialchars ($message);
$message=nl2br($message);
$message=str_replace ("'"," ",$message);
$theme=str_replace ("'"," ",$theme);
$theme=str_replace ('"'," ",$theme);
$theme=htmlspecialchars ($theme);
// Здесь следует дать пояснения об использовании
//функций htmlspecialchars (),str_replace () и nl2br ().
// htmlspecialchars () используется для того,чтобы
//преобразовать html-теги.Это делается в целях безопасности
и для защиты от разного рода шутников :)
// str_replace () заменяет символ одинарной кавычки на пробел,
//т.к. внесение одинарной кавычки в БД
//недопустимо-это специальный служебный символ.Это защитит БД от взлома.
// nl2br () преобразует символ конца строки в html-тег<br>.
//Это используется для того,чтобы текст,введенный в форму сохранился неизменным.
$query="select id from info where name='$nick' AND password='$passwd'";
// Запрос к БД.Проверка имени и пароля.
$result=mysql_query ($query);
// Если все ОК,проверяем,чтобы поля формы не были пустыми.
if (mysql_num_rows ($result)) {
if (strlen ($theme)!=0 && strlen ($message)!=0) {
// Если все ОК,вставляем данные в таблицу topics.
$query="insert into topics (top_name,name,message,post_date,last_reply)
values ('$theme','$nick','$message','$date','$date')";
$result=mysql_query ($query);
// Обновляем таблицу info-увеличиваем количество
// постов для данного пользователя на 1.
$query="update info set posts=posts+1 where name='$nick'";
$result=mysql_query ($query);
print_header ();
// Говорим пользователю спасибо.
?>
<h3 alignОnter>Thank you,<font color="ff0000"><?php echo $nick ?>!</font></h3>
<p>Your topic has been submitted.
<p><center>| <a href="<?php echo $script ?>">Go to topics</a> | <a href="<?php echo $script ?>?actiond_new_top"> Post new topic</a> |</center>
<?php
} else {
print_header ();
// Если одно из полей формы оказалось пустым-выдается ошибка.
?>
<h2 alignОnter>Error!</h2>
<p>You didn't enter topic name or message.Please,go back and try again.
<p><center>
| <a href="<?php echo $script ?>?actiond_new_top">Go back</a>
| <a href="?action=remind_pass">Forgot password?</a> |</center>
<?php
}
} else {
print_header ();
// Если введены неверные имя или пароль, также выдается ошибка.
?>
<h2 alignОnter>Error!</h2>
<p>You entered incorrect name or password.Please,go back and try again.
<p><center>| <a href="<?php echo $script ?>?actiond_new_top">Go back</a>
| <a href="<?php echo $script ?>?action=remind_pass">Forgot password?</a>|</center>
<?php
}
}
Все эти предосторожности не лишние. Во-первых в целях безопасности
самой базы данных. Во-вторых для защиты форума от случайных посетителей и
от взлома. Новый топик создан и информация добавлена в таблицу topics.
Далее рассмотрим, как разместить ответ на сообщение.
[Назад] [Содержание] [Вперед]
Автор: OlegTr
Источник: www.zk.ru/alextr/
|