PDA

View Full Version : سوال: مشکل session در captcha (حل شد)



navid3d_69
پنج شنبه 08 فروردین 1392, 22:56 عصر
سلام من در کپتچا مشکل دارم با این کد یک کپتچا درست کردم ولی مقداری که توی فرم به من نمایش میده با مقداری که توی session هست متفاوت هست مشکل از کجا می تونه باشه؟



<?php
session_start ();

// $randnum = rand(1000,9999);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$num1 = rand ( 0, 9 );
$num2 = rand ( 0, 9 );
$num3 = rand ( 0, 9 );
$num4 = rand ( 0, 9 );

function generateRandomString($length = 10) {
$characters = '012345678901234567890123456789abcdefghijklmnopqrs tuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}


$allnum = generateRandomString(1);
$allnum .= $num2;
$allnum .= generateRandomString(1);
$allnum .= $num4;

$_SESSION ['Ccode'] = $allnum;

$img = imagecreatetruecolor ( 100, 40 );

$black = imagecolorallocate ( $img, 0, 0, 0 );
$gray = imagecolorallocate ( $img, 128, 128, 128 );
$white = imagecolorallocate ( $img, 255, 255, 255 );

imagefilledrectangle ( $img, 0, 0, 150, 60, $black );

$arial = 'Fonts/ARIAL.TTF';
$verdana = 'Fonts/VERDANA.TTF';

imagettftext ( $img, 20, rand ( - 10, 10 ), 10, 28, rand ( $gray, $white ), $verdana, generateRandomString(1) );
imagettftext ( $img, 20, rand ( - 10, 10 ), 30, 28, rand ( $gray, $white ), $verdana, $num2 );
imagettftext ( $img, 20, rand ( - 10, 10 ), 50, 28, rand ( $gray, $white ), $verdana, generateRandomString(1) );
imagettftext ( $img, 20, rand ( - 10, 10 ), 70, 28, rand ( $gray, $white ), $verdana, $num4 );
header ( 'content-type: image/png' );
imagepng ( $img );
imagedestroy ( $img );


?>

arenaw
پنج شنبه 08 فروردین 1392, 23:18 عصر
به خاطر اینکه شما اون آخر که داره روی عکس چاپ میکنه یه بار و وقتی که توی سشن دارید مقدار میریزید یه بار رشته جدید جنریت کردید:


<?php
session_start ();

// $randnum = rand(1000,9999);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$num1 = rand ( 0, 9 );
$num2 = rand ( 0, 9 );
$num3 = rand ( 0, 9 );
$num4 = rand ( 0, 9 );

function generateRandomString($length = 10) {
$characters = '012345678901234567890123456789abcdefghijklmnopqrs tuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}


$allnum = generateRandomString(1);
$allnum .= $num2;
$allnum .= generateRandomString(1);
$allnum .= $num4;

$_SESSION['Ccode']= $allnum;


$img = imagecreatetruecolor ( 100, 40 );

$black = imagecolorallocate ( $img, 0, 0, 0 );
$gray = imagecolorallocate ( $img, 128, 128, 128 );
$white = imagecolorallocate ( $img, 255, 255, 255 );

imagefilledrectangle ( $img, 0, 0, 150, 60, $black );

$arial = 'Fonts/ARIAL.TTF';
$verdana = 'Fonts/VERDANA.TTF';

imagettftext ( $img, 20, rand ( - 10, 10 ), 10, 28, rand ( $gray, $white ), $verdana, $allnum[0] );
imagettftext ( $img, 20, rand ( - 10, 10 ), 30, 28, rand ( $gray, $white ), $verdana, $allnum[1] );
imagettftext ( $img, 20, rand ( - 10, 10 ), 50, 28, rand ( $gray, $white ), $verdana, $allnum[2] );
imagettftext ( $img, 20, rand ( - 10, 10 ), 70, 28, rand ( $gray, $white ), $verdana, $allnum[3] );
header ( 'content-type: image/png' );
imagepng ( $img );
imagedestroy ( $img );


?>



بهتره از رنگه مشکی هم استفاده نشه، چون حروف مشکی تو بکگراند مشکی ناخوانا میشه

navid3d_69
پنج شنبه 08 فروردین 1392, 23:29 عصر
خیلی ممنون رنگ هارو جوری تنظیم کردم که مشکی نیاد برای متن

این کد رو ادیت کردن بودم بعد جا به جا شد ممنون که کمک کردین