Защита от авторегистраций на сайте

Статус
В этой теме нельзя размещать новые ответы.

Anna

Новичок
Защита от авторегистраций на сайте

Пытаюсь сделать Защиту от авторегистраций на сайте.
Есть форма. нужно сделать картинку с числами, при совпадении данные из формы отправляются на почту...

картинка генерирующаяся случайным образом есть (почитала форум+интернет)
соответственно форма тоже есть, не получается сделать чтоб при совпадении введеного форма работала...
Денвер выдает ошибку вот в этой строчке (в первой):

PHP:
if ($secret_code != $s)  echo 'неправильный код';
     else {
   echo '<center><b>Ваш вопрос получен, в ближайшее время мы Вам ответим.</b><br><br><a href="javascript: history.go(-1);"><< Назад</a></center>';
          }
Вот код картинки:

PHP:
<? 
error_reporting(0);
session_start();

$liters=array(0=>"a",1=>"z",2=>"m",3=>"f",4=>"h",5=>"s",6=>"r");
$str=rand(6,9);//число от одного до 9
$str1=$liters[rand(0,count($liters))];
$str2=rand(1,6);// число от 1 до 6
$str1=$liters[rand(0,count($liters))];
$str4=rand(1,34);//число от одного до 34
$s="$str$str1$str2$str3$str4";
session_register("secret_code");
$secret_code=$s;

$image = makeImage($s); 
//Создаем тег "img" и делаем его приемленым для неграфических браузеров 
echo "<img src=\"$image\">"; 
//Функция динамического изображения 
function makeImage($number) 
{ 
    //имя изображения нашего генератора 
    $image = "gen.png"; 
    //Настройка переменных для определения ширины и высоты изображения 
    $lenGen = strlen ($number); 
    $charHeight = ImageFontHeight(5); 
    $charWidth = ImageFontWidth(5); 
    $stringWidth = $charWidth * $lenGen; 
    //Увеличение изображения что бы лучше смотрелось 
    $imgWidth = $stringWidth + 10; 
    $imgHeight = $charHeight + 5; 
    //Центрируем Изображение 
    $imgMidX = $imgWidth / 2; 
    $imgMidY = $imgHeight / 2; 
    //Создаем изображение, идентифецируем его как $i используя вычесленные ранее значения 
    $i = ImageCreate ($imgWidth, $imgHeight); 
	//Имена цветов 
    $white = ImageColorAllocate ($i, 255, 255, 255); 
    $blue = ImageColorAllocate ($i, 58, 110, 165); 
	ImageFilledRectangle ($i, 0, 0, $imgWidth-3, $imgHeight-3, $blue); 
    //Определяем област в которой начинаем рисовать 
    $textX = $imgMidX - ($stringWidth / 2) ; 
    $textY = $imgMidY - ($charHeight / 2); 
    ImageString ($i, 5, $textX, $textY, $number, $white); 
    //выводим изображение в фаил пнж 
    ImagePng($i, $image); 
    //Возращаемся  
    return $image; 
} 

?>
в форме <input name="secret_code" type="text">
и кнопка отправить...

Вопрос заключается в том как сделать форму рабочей?
Если что то не понятно написала пишите.
Жду помощи, заранее спасибо :)
 

Anna

Новичок
Автор оригинала: Quessir
echo "<img src=\"$image\">"; - это не пойдет.

надо echo $image;
если делать как ты говоришь, то пишет gen.png, а не показывает картинку...

-~{}~ 25.07.06 14:24:

я не блондинка.
 

Anna

Новичок
Автор оригинала: Quessir
А какую ошибку он(Денвер) выводит?
когда все поля формы введены, и правильно ввожу код показаный на картинке:

Notice: Undefined variable: s in z:\home\localhost\www\g\script_formcz.php on line 50

-~{}~ 25.07.06 14:32:

т.к. я не мега программист, думаю дело в коде...
скорее всего он не правильный....
 

WP

^_^
Анна
Итак, есть задача защитить форму с помощью CAPTCHA (completely automated public Turing test to tell computers and humans apart), т.е. роботов отправить лесом. Для этого нужно при загрузке страницы с формой сгенерировать случайным образом rndcode (случайная последовательность символов a-zA-Z0-9 длиной скажем 8 символов), и text - непосредственно текст для картинки. Эти переменные нужно записать в БД (я делаю так), или в сессию, затем в форме сделать тег картинки с src вроде "captcha.php?rndcode=$rndcode", поле для ввода текста пользователем, и hidden-поле rndcode.
captcha.php должен поставить флаг о том что картинка уже показана, и если этот флаг поставлен ранее вывести нечто вроде "Error.", а если нет, вывести картинку с текстом, при этом несколько искаженную, разными шрифтами, с изменяющимся положением, и т.д.
Когда пользователь заполнит форму, нужно сверять данные из БД (или сессии) с тем что ввел пользователь. Если всё верно - пропускаем, а если нет, выводим сообщение о том что неверно введен код, и просим ввести еще раз (уже другой).
Quessir
[заранее вырезано цензурой]
 

Quessir

Новичок
Так если у тебя s в функции тебе его тоже вытаскивать надо.
 

WP

^_^
Anna
> т.к. я не мега программист, думаю дело в коде...
=)
> скорее всего он не правильный....
Правильного или неправильного кода не бывает, бывает код, и его результат.

Думаю, Вам стоит взять готовое решение, таких много. Или Вы хотите написать самой?
 

Anna

Новичок
Автор оригинала: WP
Anna
> т.к. я не мега программист, думаю дело в коде...
=)
> скорее всего он не правильный....
Правильного или неправильного кода не бывает, бывает код, и его результат.

Думаю, Вам стоит взять готовое решение, таких много. Или Вы хотите написать самой?
этот код не мой, точнее это гибрид:)
я нашла в интернете и на этом форуме как делать картинку, применила все это...
на как сделать проверку в моей форме, чтобы все работала не знаю..не получается...
 

Anna

Новичок
Автор оригинала: Quessir
Так если у тебя s в функции тебе его тоже вытаскивать надо.
куда вытаскивать? что это значит?

ошибка в этой строчке:

PHP:
if ($secret_code != $s)  echo 'неправильный код';
 

Фанат

oncle terrible
Команда форума
http://captcha.ru/kcaptcha/ - всё работает.
если и это не заработает, построй глазки какому-нибудь мальчику здесь, чтобы он тебе сделал. надеюсь, хоть это у тебя получится.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху