Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

капча
Сообщения
BloodStarsz

помогите, пожалуйста, с капчей.
вот ее код:
[php:1:52b7fc7704]<?php
session_start();
$image=imagecreatetruecolor(75, 40) or die ('Ошибка при создании изображения') /создание изображения
//используемые цвета:
$rgb=imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
$rgb1=imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagefilledrectangle($image, imagesx($image), imagesy($image), 0, 0, $rgb);
$text=mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9) /текст
$arr=imagettfbbox(17, 0, 'arial.ttf', $text);
$w=$arr[2]-$arr[0];
$h=$arr[7]-$arr[1];
$_SESSION['cap']=$text; //запись текста в сессию
imagettftext($image, 17, mt_rand(-25,25), (imagesx($image)-$w)/2, (imagesy($image)-$h)/2, $rgb1, 'arial.ttf', $_SESSION['cap']); //нанесение текста на изображение
for($k=1, $r=mt_rand(3,7); $k<=$r; $k++){
$rgb2=imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imageline($image, mt_rand(0,imagesx($image)), mt_rand(0, imagesy($image)), mt_rand(0,imagesx($image)), mt_rand(0, imagesy($image)), $rgb2);
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>[/php:1:52b7fc7704]
вот ее вывод и проверка(знаю что нужно фильтровать введеные пользователем данные, потом это сделаю):
[php:1:52b7fc7704]<?php
session_start();
if (isset($_POST['ok']) && $_POST['text']==$_SESSSION['cap']) echo 'pravilno';
if (isset($_POST['ok']) && $_POST['text']!=$_SESSSION['cap']) echo 'ne pravilno';

?>
<html><body>TEXT: <img src='cap.php'>
<form action='' method='post'>
<input type='text' name='text'>
<input type='submit' value='ok' name='ok'>[/php:1:52b7fc7704]
а теперь вопрос: почему в сессию записываются числа, которые были на прошлом изображении, а не на том, которое сейчас? как это исправить?

04 Июн 2013, 16:41
SL_NeKrOmAnT

А первая картинка тогда как, когда вот только открыл страницу эту?
И еще, надо чистить эту сессию после проверки.

04 Июн 2013, 19:14
BloodStarsz

SL_NeKrOmAnT, при первом запуске файла(где выводится капча) сессия пустая.

05 Июн 2013, 11:18
SL_NeKrOmAnT

Я надеюсь ты проверяешь наличие сессии после вызова капчи, тоесть после формы?

05 Июн 2013, 16:42
Pisatel

-del-


__________
посл.ред. 06 Июн 2013, 5:29; всего 1 раз 05 Июн 2013, 16:54
SL_NeKrOmAnT

Не в тему написал. Сессии у него работают.

05 Июн 2013, 19:32
Pisatel

SL_NeKrOmAnT, не в тему? Не вопрос, уберу. Вот только проверка не на работу сессии, а на корректную работу сессии. Это раз. И второе- не тебе решать, в тему или не в тему, так как пост был для тс, а не для тебя. Из-за подобных высказываний пропадает желание вообще чем-либо помогать.

06 Июн 2013, 5:28
BloodStarsz

SL_NeKrOmAnT, конечно) самые последние строчки:
[php:1:decc029ab2]<?php
echo '<br> cap_ '.$_SESSION['cap'];
?>[/php:1:decc029ab2]

06 Июн 2013, 11:09
Pisatel

[php:1:8a4810075f]if(count($_POST)>0){
if(isset($_SESSION['cap']) && $_SESSION['cap'] == $_POST['text']){
echo "Good";
} else {
echo "Bad";
}
}
unset ($_SESSION['cap']);[/php:1:8a4810075f]
Последняя строчка должна чистить сессию.

06 Июн 2013, 13:47
Епифанцев

Pisatel, разве сессия не очищается когда пользователь закрывает браузер?

06 Июн 2013, 13:52
Ответить на тему