PDA

View Full Version : سوال: اعتبارسنجي تصوير امنيتي



ravand
سه شنبه 02 اسفند 1390, 23:19 عصر
براي اعتبارسنجي تصوير امنيتي در سمت سرور از چه كدي بايد استفاده كنم ؟
متشكرم

buggen
سه شنبه 02 اسفند 1390, 23:48 عصر
پیشنهاد میکنم از reCAPTCHA استفاده کنید

اینم نحوه ی استفادش در PHP
http://code.google.com/apis/recaptcha/docs/php.html

idocsidocs
چهارشنبه 03 اسفند 1390, 01:17 صبح
فقط توجه کنید که اگر از این تصاویر استفاده کنید یه صفحه رو توی 10 تا تب باز کنید، اعتبار سنجی درست انجام نمی شه.

به همین دلیل سسشن ها رو بصورت آرایه ذخیره کنید.

ravand
چهارشنبه 03 اسفند 1390, 08:51 صبح
فقط توجه کنید که اگر از این تصاویر استفاده کنید یه صفحه رو توی 10 تا تب باز کنید، اعتبار سنجی درست انجام نمی شه.

به همین دلیل سسشن ها رو بصورت آرایه ذخیره کنید.


ميشه يه مثال بذاريد؟ چون من بلد نيستم اين كار رو بكنم.
متشكرم.

ravand
چهارشنبه 03 اسفند 1390, 09:40 صبح
من از اين كد استفاده كردم:

<?php
session_start();
if ($_POST["captcha"] != $_SESSION["captcha"] OR $_SESSION["captcha"]=='') {
echo '<b>كد تاييد اشتباه است</b><br>';
} else {
echo '<b>تاييد با موفقيت انجام شد</b><br>';
}
?>
و برام كار كرد. حالا نظر شما چيه؟ بهتره از چه روشي استفاده كنم؟

MostafaEs3
چهارشنبه 03 اسفند 1390, 10:13 صبح
//////////

idocsidocs
چهارشنبه 03 اسفند 1390, 11:06 صبح
و برام كار كرد. حالا نظر شما چيه؟ بهتره از چه روشي استفاده كنم؟
الان توی یه صفحه که این کد توش اجرا می شه رو توی 10 تا باز کنید و توی یکی از تبهای وسطی فرم رو ارسال کنید. می بینید که اعتبار سنجی انجام نمی شه.

ravand
چهارشنبه 03 اسفند 1390, 11:10 صبح
پس اينكه اين دوستمون گفتن به صورت آرايه بسازم اين بود؟
يعني در واقع من خود تصوير امنيتي رو بايد به صورت آرايه بسازم مثل زير:

<?php
session_start();
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");

function _generateRandom($length=6)
{
$_rand_src = array(
array(48,57) //digits
, array(97,122) //lowercase chars
// , array(65,90) //uppercase chars
);
srand ((double) microtime() * 1000000);
$random_string = "";
for($i=0;$i<$length;$i++){
$i1=rand(0,sizeof($_rand_src)-1);
$random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1]));
}
return $random_string;
}

$im = @imagecreatefromjpeg("captcha.jpg");
$rand = _generateRandom(3);
$_SESSION['captcha'] = $rand;
ImageString($im, 5, 2, 2, $rand[0]." ".$rand[1]." ".$rand[2]." ", ImageColorAllocate ($im, 0, 0, 0));
$rand = _generateRandom(3);
ImageString($im, 5, 2, 2, " ".$rand[0]." ".$rand[1]." ".$rand[2], ImageColorAllocate ($im, 255, 0, 0));
Header ('Content-type: image/jpeg');
imagejpeg($im,NULL,100);
ImageDestroy($im);
?>

ravand
چهارشنبه 03 اسفند 1390, 11:13 صبح
حالا اين كدهاي منه فرقش با اون چيزايي كه شما نوشتيد چيه؟

<?php
session_start();
$img = imagecreatefrompng('test.png');
$numero = rand(100, 999);
$_SESSION["captcha"] = $numero;
$white = imagecolorallocate($img, 255, 255, 255);
imagestring($img, 10, 8, 3, $numero, $white);
header ("Content-type: image/png");
imagepng($img);
?>

اينم اعتبارسنجيش:

<?php
session_start();
if ($_POST["captcha"] != $_SESSION["captcha"] OR $_SESSION["captcha"]=='') {
echo '<b>كد تاييد اشتباه است</b><br>';
} else {
echo '<b>تاييد با موفقيت انجام شد</b><br>';
}
?>

idocsidocs
چهارشنبه 03 اسفند 1390, 11:23 صبح
يعني در واقع من خود تصوير امنيتي رو بايد به صورت آرايه بسازم مثل زير:
در این مورد قبلا یه تاپک ایجاد کرده بودم. دوستان نظرات کاملی دادن. می تونید اون تاپک رو بخونید.

ravand
چهارشنبه 03 اسفند 1390, 14:45 عصر
آدرس اون تاپيكي كه ميگيد چيه؟

idocsidocs
چهارشنبه 03 اسفند 1390, 14:56 عصر
آدرس اون تاپيكي كه ميگيد چيه؟آدرس لینک یادم نمی یاد.