Код с картинки лежит тут: 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) ??.
ммм..