Captcha с цифри
18-10-2009
captcha.php

<?php
session_start(); //стартираме сесията
$captcha = rand(10000,99999);

//генерираме случайно петцифрено число с фукцията rand. Тя приема два параметъра. Първи е началното число, втория крайното число. Така ще генерира случайно число, което се намира между тези двете.

$code = md5($captcha);

//хешираме данните чрез md5 функцията
$_SESSION['captcha'] = $code;

//вкарваме всичко в сесия $_SESSION['captcha']

$width = 90;
$height = 35;

//създавам две променливи width и height за ширината и височината на изображнеието

$image = imagecreate($width,$height);

//Използваме функцията imagecreate() за да създадем изображението.

$background = imagecolorallocate($image,120,55,145);
$foreground = imagecolorallocate($image,245,245,245);

//задаване фона на снимката (в случая $background) и цвета на текста ($foreground). Сложил съм примерни имена на променливите.

imagestring($image,20,20,12, $captcha, $foreground);

header('Content-type: image/jpeg');

//задаваме content-type да е image/jpeg или според типа на изображението. Много е важно да бъде зададен.

imagejpeg($image);
imagedestroy($image);
?>


register.php

<?php
error_reporting(0); //изключваме error_reporting
session_start(); //стартираме сесията
if($_POST['form_submit']==1){ //правим проверка дали е събмитната формата.

$code_posted = $_POST['captcha'];
if($_SESSION['captcha'] == md5($code_posted)) {
//сравняваме постнатият код с хеша на кода от изображението, запазен в сесията $_SESSION['captcha']
echo 'Правилно!'; //ако всичко е наред, изкарваме съобщение.
}
else
{
echo 'Грешка!'; //ако има грешка, изкарваме съобщение.
}
}
else
{
echo 'Моля попълнете формата!'; //ако не е събмитната формата, изкарваме съобщение.
}
?>

<html>
<br /><br /><img src="captcha.php" /><br /><br />
<form action="" method="post">
<input type="text" name="captcha" />
<input type="submit" name="submit" value="давай"/>
<input type="hidden" name="form_submit" value="1"/>
</form>
</html>

<!-- Това ни е формата. Методът е post, имаме едно текстово поле за попълване на кода и едно скрито поле, чрез което ще правим проверка дали е попълнена формата, за да започне обработка и сравнение на двата кода (този от изображението и попълненият от потребителя. Имаме и един submit бутон. Изображението вкарваме чрез img тага на html. За тези, които не са се занимавали с това досега - не се опитвайте да инклудвате captcha.php във файла, защото ще му придаде Content-type: image/jpeg. -->


От демо мисля, че няма нужда. Надявам се да сте схванали принципа. Скоро мога да направя същото приложение с ajax.



/ Трябва да сте регистриран за да напишете коментар /
От: sharkylx
12:59 30-10-2009
Мерси , урока е супер :)
От: federer_11
22:31 03-11-2009
Благодаря! Струваше си!
1