Добавяне на цифри към Captcha

bganonymous

Registered
Ползвам следната Captcha. Как да направя, освен букви да генерира и цифри?

Код:
<?php
session_start();
$string = '';
for($i = 0; $i < 4; $i++)
{
$string .= chr(rand(97,122));
}
$_SESSION['randcode'] = $string;
$dir = "fonts/";
$image = imagecreatetruecolor(70, 30);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 233, 233, 233);
imagefilledrectangle($image, 0, 0, 170, 60, $white);
imagettftext($image, 15, 5, 10, 23, $color, $dir."courbd.ttf", $_SESSION['randcode']);
header("Content-type: image/png");
imagepng($image);
?>
 
Така ?
PHP:
<?php
session_start();
$string = '';
for($i = 0; $i < 4; $i++)
{
$string .= chr(rand(97,122));
$string .= rand(10,100);
}

$string = str_shuffle($string);

$_SESSION['randcode'] = $string;
$dir = "fonts/";
$image = imagecreatetruecolor(70, 30);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 233, 233, 233);
imagefilledrectangle($image, 0, 0, 170, 60, $white);
imagettftext($image, 15, 5, 10, 23, $color, $dir."courbd.ttf", $_SESSION['randcode']);
header("Content-type: image/png");
imagepng($image);
?>
 
eddyy93 каза:
Така ?
PHP:
<?php
session_start();
$string = '';
for($i = 0; $i < 4; $i++)
{
$string .= chr(rand(97,122));
$string .= rand(10,100);
}

$string = str_shuffle($string);

$_SESSION['randcode'] = $string;
$dir = "fonts/";
$image = imagecreatetruecolor(70, 30);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 233, 233, 233);
imagefilledrectangle($image, 0, 0, 170, 60, $white);
imagettftext($image, 15, 5, 10, 23, $color, $dir."courbd.ttf", $_SESSION['randcode']);
header("Content-type: image/png");
imagepng($image);
?>
Не... http://store.picbg.net/pubpic/9C/3F/02df44275f6a9c3f.png
 
;)

PHP:
<?php
session_start();
function captcha_text(){
	$length = 4;
	$options = "abc2def3ghj4kmn5pqr6stu7vwx8yz9";
	$option_length = (strlen($options)-1);
	$captcha = "";
	$i = 0;
	while ($i < $length){
		$random = mt_rand(0, $option_length);
		$captcha .= $options[$random];
		$i++;
	}
	return $captcha;
}
$_SESSION['randcode'] = captcha_text();
$image = imagecreatetruecolor(70, 30);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 233, 233, 233);
imagefilledrectangle($image, 0, 0, 170, 60, $white);
imagettftext($image, 15, 5, 10, 23, $color, "fonts/courbd.ttf", captcha_text());
header("Content-type: image/png");
imagepng($image);
?>

Дължината е нагласяш от тук: $length = 4;

4 е за четири символа. Можеш да добавиш и знак какъвто ТИ искаш в $options
 
Сега, като използвам Captcha-та в някой форма, дори и да въведа правилно Captcha-та - ми изписва грешка... :( Иначе генерирането на Capctha-та е OK.
 
Нещо бъркаш. Провери дали сесията се създава т.е. $_SESSION['randcode'];

Проверката можеш да е правиш така:

PHP:
if ($_SESSION['randcode'] == $_POST['captcha']) {
	echo "Кода е правилен!";
} else {
	echo "Кода не е правилен";
}
 
Направи си една проста сметка, колко пъти въртиш цикъла и също така rand(); функцията от колко до колко да ти вади ... :!:

PHP:
<?php
session_start();
$string = '';
for($i = 0; $i < 2; $i++)
{
$string .= chr(rand(97,122));
}

$string .= rand(11,99);
$string = str_shuffle($string);

$_SESSION['randcode'] = $string;
$dir = "fonts/";
$image = imagecreatetruecolor(70, 30);
$black = imagecolorallocate($image, 0, 0, 0);
$color = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 233, 233, 233);
imagefilledrectangle($image, 0, 0, 170, 60, $white);
imagettftext($image, 15, 5, 10, 23, $color, $dir."courbd.ttf", $_SESSION['randcode']);
header("Content-type: image/png");
imagepng($image);
?>
 
uphero каза:
що се мъчите с тези объркани и смешни скриптове ето ви нещо което работи
http://www.codefuture.co.uk/projects/captcha/

Аз не виждам нищо объркано в скрипта на автора.
Ако има нещо неясно - питай , ще ти обясним. :)

Колкото до този линк, който даде. Мога само да кажа, че има прекалено, прекалено много излишни неща, няма смисъл от тях.

2 - ро Използват бисквитки, мога да си ги изключа и край със функционалността на captcha.

3 - то Използва се JS, мога да си изключа JS и край със функционалността на captcha, да не говорим че има хора, който ползват такива браузери - конзоли (те са на принципа на Command Promt във windows или там линкуксия, при тях единствено сесиите работят и бисквитките(ако ги пуснат)).

Единствен + на този код, който даде е, че нещата ще станат малко по - подредени ако капчата се използва на доста места във сайта.
 
uphero каза:
Добре сега намери 3-ма твои приятели които не се занимават с програмиране и и ги питай дали знаят какво са бисквитки и js скриптове

Виж как сам се обърка в собствените си писания..

Един обикновен потребител, който не знае как да включва и изключва бисквитки и не се занимава с javascript, на него не му дреме как работи дадено нещо. ВАЖНОТО Е ДА РАБОТИ!!

Какво ще стане ако случайно или поради някаква друга причина бисквитките или javascript-а са изключени?? Потребителят ще опита няколко пъти да въведе символите от картинката и като види, че не става ще му тегли една.. и ще се откаже или дори ядосан ще излезе от сайта.. Сега ще си кажеш: Абе то там някакви си хора, където ще направят това, те са много малко, какво ми пука на мен за тях?? Ето точно тук идва и грешката при повечето хора, които се занимават с програмиране и по-специално с web програмиране. Не се обръща внимание на единичните случаи и това в повечето води само да негативен ефект.

Представи си че си влязъл в сайт, в който нещо не ти е харесало или просто нещо не е работило. Излизаш на вън с приятели и се заговаряте за тема свързана с този сайт. Ти казваш: Абе то нещо не работи, много тъпо.. Твоите приятели се отказват да посещават сайта и е много вероятно те също да кажат на техните приятели, че този сайт не струва, само заради някакъв си бъг при 1% от хората. Помисли сам до какво води това и в действителност от 1% в колко % се превръщат изгубените потребители или дори бъдещи клиенти!!

Това е просто пример, който се надявам да те накара да се замислиш, кое и как е по-правилно да се направи. Помисли малко над темата със смешните скриптове и после пиши. Поздрави :)
 

Back
Горе