Помогите пожалуйста с обработкой комментов на сайте, сил больше нет (((

ККлава

Новичок
Здравствуйте.
Помогите пожалуйста обработать комментарии, переданные через форму.
Каждый день по 30-40 сообщений удаляю, а они все лезут и лезут, замучалась уже одно и то же удалять!
Вот что мне на сайт в комментах пишут:
Получается, что вставляют ссылки на другие сайты. Как прекратить этот беспредел?
Это мой код обработки формы
PHP:
if (
    isset($_POST['name']) && !empty($_POST['name']) &&
    isset($_POST['time']) && !empty($_POST['time']) &&
	isset($_POST['blok']) && !empty($_POST['blok']) &&
    isset($_POST['text']) && !empty($_POST['text'])
)
{
    // Обрабатываем данные
    $name = stripslashes(trim(htmlspecialchars($_POST['name'],ENT_QUOTES)));
    $time = stripslashes(trim(htmlspecialchars($_POST['time'],ENT_QUOTES)));
	$id = stripslashes(trim(htmlspecialchars($_POST['blok'],ENT_QUOTES)));
    $text = stripslashes(trim(htmlspecialchars($_POST['text'],ENT_QUOTES)));
	
	  $sql = "INSERT INTO
        comments (name, text, blok, date )
    VALUES
        ('$name','$text','$id','$time' )
    ";
    mysql_query($sql); 
	header('Location: ' . $_SERVER['PHP_SELF']. "?id=$id");
    exit;
}
 
Может ссылку дадите? Читать засяду, ткните носом, как исправить ошибки, пожалуйста...
 
Пока по вышеприведённой ссылке статья не обновлена, я бы порекомендовал новую версию - http://habrahabr.ru/post/148701/

По поводу защиты от ботов, для небольшой гостевой вполне подойдёт простенькая защита-обманка.

Добавить к форме одно поле, обозвать "email", в описании попросить ничего не писать, и проверять символ @
боты будут старательно заполнять это поле емейлом и будут отловлены.
 
Фанат
Я думаю, что сделать поле, но скрыть средствами CSS. Бот его должен заполнить.

Не стоит недооценивать глубину человеческой тупизны, бывает что пишешь - не заполнять, а люди не видят...
 
Да и фиг бы с ними. зачем нам комменты от тупиц?
Боты-то, как раз, куда умнее. Хотя, конечно, вряд ли парсят css файл.
 
Если поле email делать скрытым, то в таблице создать еще строку, и поставитm значение NULL? Или ничего не ставить, оставить как есть, т.е. по умолчанию-Нет. Я так понимаю, если это поле будет скрытым от обычных пользователей, то они его не смогут заполнить, а бот сможет?
 
Значит, в таблицу вообще ничего не должно заноситься из поля email? А нужно будет просто проверять заполнено это поле или нет? И если это поле заполнено, то редирект, или как? Или я опять ничего не поняла ((((
Вы уж извините за идиотские вопросы.
 
если это поле заполнено, то лучше всего имитировать нормальное поведение скрипта, за исключением записи комментария в базу.
ошибку никакую выдавать не надо. пусть бот думает, что сделал свое черное дело
 
в таблицу вообще ничего не должно заноситься.
наща цель - если её кто забыл - не записывать в таблицу спам комментарий. целиком, а не только одно поле емейл
 
Ничего умнее не придумала, кроме как добавить строчку:
PHP:
isset($_POST['email']) && empty($_POST['email']) &&
 
проверьте регуляркой присутствие url
если присутствуют - запрос фф топку
 
Пришла в голову мысль - а если поменять местами name у полей "имя" и "email"? Т.е. лейблы (то, что видит пользователь) оставить правильными, а HTML-ные атрибуты поменять. Бот парсит name, и пытается отправить мыло вместо имени. Никаких стилей, скрытых полей и т.д. не надо. Естественно, в скрипте придется учитывать такой нелогичный размен :)
 
Сверху