[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Собственная проверка от роботов-спамеров
asstral
Есть обычная форма для добавки сообщений к посту. Она видна всем:

user posted image

Код с картинки лежит тут: http://мойсайт.ru/bin/php/ap.php
Собственно, вот его содержимое:

<?php
session_start();
setlocale(LC_ALL, "ru_RU.CP1251");
$vs=0;

// Генерация аппачи:
$cis = rand(1000000, 100000)+100000+rand(10000000, 100000000);
$im_c = imageCreate(150, 50);

$ink = imagecolorallocate($im_c, 170,170,170);

$colorBackgr = imageColorAllocate($im_c, 255,255,255);
imageFilledRectangle($im_c, 0,0,400,50, $colorBackgr);

$color = imageColorAllocate($im_c, 0,0,0);
$color2 = imageColorAllocate($im_c, 0,0,0);
imageTtfText($im_c, rand(24,27), 1+rand(0,6),15, 40, $color, "../css/abc3.ttf", $cis);

for ($i=0; $i<28; $i++){
$xx=rand(0, 100);
imageLine($im_c, $xx, 0, $xx+rand(0,25), 50, $color2);
}

// Стандартный прямоугольник
imagerectangle($im_c,0,0,149,49,$ink);

//Отправляем заголовок с mime-type
$_SESSION['APPACHI'] = $cis;
Header("Content-type: image/jpeg");
//Выводим изображение
imageJpeg($im_c);
//Уничтожаем идентификатор и освобождаем ресурсы сервера
imageDestroy($im_c);

?>


Всё работает, выводится картинка.
В переменную $_SESSION['APPACHI'] записывается рандомный код.

Когда пользователь отправляет ФОРМУ идёт проверка (где code - это вводимый в форме - код):

$code = (int)($_POST['code']);
$ap = (int)($_SESSION['APPACHI']);
// Обновляем
$_SESSION['APPACHI'] = rand(999999,99999999);

if (($code>10) && ($ap>10)){
if ($code == $ap){
//код правильный
.... заносим в БД комментарий
}
else {
//Код введен не правильно
exit; die;
}
}



Есть в этом смысл?
Будет ли это работать?

К примеру: пользователь выключил хранение COOKIE, из-за чего PHPSESSID не сохраняется. Может он как нибудь попасть к ($code == $ap) ??.


ммм..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.