PDA

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



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

buggen
چهارشنبه 03 اسفند 1390, 00:48 صبح
پیشنهاد میکنم از reCAPTCHA استفاده کنید

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

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

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

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

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


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

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

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

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

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

ravand
چهارشنبه 03 اسفند 1390, 12: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, 12: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, 12:23 عصر
يعني در واقع من خود تصوير امنيتي رو بايد به صورت آرايه بسازم مثل زير:
در این مورد قبلا یه تاپک ایجاد کرده بودم. دوستان نظرات کاملی دادن. می تونید اون تاپک رو بخونید.

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

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