(13.10.2013 16:16:33)Костя писал(а):У меня в БД только две таблицы, которые указаны в таблице. Больше ничего добавлять я не планирую.
Я хочу, чтобы посетители сайта писали и отправляли сообщение без указания в форме имени и ввода результата примера. Не скажется ли это на безопасности? На сайте спрашивай.ру так реализовано(только текстовое поле и кнопка отправить).
Также хочу, чтоб сообщение выводилось на странице без оценок (совсем их убрать и соответственно без имени).
Первое предложение не совсем понял, что за таблицы в таблице, но предполагаю речь о таблицах
comment и
ocenka_comment. Так вот таблица
ocenka_comment теперь Вам не нужна, можете удалять ее. А из таблицы
comment удалите поле
login.
Далее привожу три блока кода, которые Вам понадобятся.
Этот, как и раньше идет первым в самом начале странички:
PHP код:
<?php
session_start();
$link = mysql_connect("localhost", "***", "***") or die("Could not connect: " . mysql_error());
mysql_select_db("***", $link);
$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');
if (isset($_POST[contr_cod])) {
$_SESSION[comment_user_text]=$_POST[user_text];
if (get_magic_quotes_gpc()=="0") $_SESSION[comment_user_text]=mysql_real_escape_string($_SESSION[comment_user_text]);
$_SESSION[comment_user_text]=htmlspecialchars($_POST[user_text]);
if (md5($_POST[contr_cod])==$_POST[prov_summa]) {
$result = mysql_query("insert into comment (date,theme,message) values ('".date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."','".$_SESSION[comment_user_text]."')");
$_SESSION[send]='Комментарий принят и ожидает модерации.';
$_SESSION[comment_user_text]='';
header("Location: $_SESSION[mess_url]#last");
exit;
}
else {
$_SESSION[send] = "Неверный проверочный код!";
header("Location: $_SESSION[mess_url]#last");
exit;
}
}
?>
В том месте, где выводятся комментарии, вот этот код:
PHP код:
<?php
$result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."' and moderation=1 ORDER BY id desc", $link);
$number = mysql_num_rows($result);
if ($number>0) {
echo '<hr><div align="center">
<u><b>Последние комментарии посетителей:</b></u><br>';
for ($n=1; $n<=$number; $n++) {
$comments=mysql_fetch_array($result);
echo '<br><table border="0" width="100%" style="border: 1px solid #4874a3;"><tr>';
echo '<td align="left"><div id="m'.$comments[id].'"></div><b>'.$comments[login].'</b></td>';
echo '<td width="140"><span style="font-size:12px;">('.$comments[date].')</span></td></tr></table>';
echo '<table border="0" width="100%" style="border: 1px solid #eeeeee;" bgcolor="#eeeeee">';
echo '<tr><td colspan="5" align="justify">'.wordwrap(nl2br($comments[message]), 70, "\n", 1).'</td></tr></table>';
}
echo '</div><br>';
}
else echo '<hr>';
?>
Ну и сама форма для отправки комментариев:
PHP код:
<?php
echo '<div id="last" align="center">';
echo '<form method="POST" action="'.$_SESSION[mess_url].'#last">';
echo '<table border="0" style="border: 1px solid #4874a3;border-radius:8px;" bgcolor="#7799ee" cellspacing="4">';
echo '<tr><td colspan="2" align="center"><b>Добавить комментарий к теме:</b><br>';
$prov_cod=rand(1000,9980); $prov_cod_2=rand(1,19);
echo '<textarea cols="65" rows="5" name="user_text" required>'.$_SESSION[comment_user_text].'</textarea><br>';
echo '<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
echo '<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';
echo '<input type="text" name="contr_cod" maxlength="4" size="4" required>';
echo '<input type="submit" value="Отправить"></td></tr></table></form>';
$_SESSION[comment_user_text]='';
if (isset($_SESSION[send])and($_SESSION[send]!="")) {
echo '<font color="red"><b>'.$_SESSION[send].'</b></font>';
$_SESSION[send]="";
}
echo '</div>';
?>