PDA

View Full Version : مشکل در کد کپچا/captcha



abbas27
سه شنبه 22 مهر 1393, 11:16 صبح
سلام بر دوستان-مشکل کد کپچای من چیه که کد رو درست وارد میکنم بعضی موقع میگه کد درسته بعضی موقع هم با اینکه کد امنیتی رو درست وارد میکنم میگه اشتباه است.

captch-ok.php



<?php
session_start();
function getRandomString(){
$length=6;
$characters='0123456789abcdefghijklmnopqrstuvwxyz' ;
$string='';
for($p=0;$p<$length;$p++){
$string.=$characters[mt_rand(0,strlen($characters))];
}
return $string;
}
header('Content-type: image/jpeg');
$_SESSION["secure"]= getRandomString();
$font_size=25;
$image_width=175;
$image_height=60;
$image= imagecreate($image_width,$image_height);
imagecolorallocate($image,200,180,50);
$text_color= imagecolorallocate($image,0,0,0);
for($x=1;$x<=100;$x++)
{
$x1=rand(1,150);
$y1=rand(1,100);
$x2=rand(1,500);
$y2=rand(1,150);
imageline($image,$x1,$y1,$x2,$y2,$text_color);

}
imagettftext($image, $font_size,10,20,50,$text_color,"oldsans.ttf",$_SESSION['secure']);

imagejpeg($image);
?>





ins.php




<?php
session_start();
ob_start();?>
<?php
if($_POST['reg'])
{



if(($_POST['captcha'])!=($_SESSION['secure']))
{
echo '<font color="#EC070A">کد امنیتی صحیح نمیباشد!!! </font>';
echo $_SESSION["secure"];
exit();

}
elseif(($_POST['captcha'])==($_SESSION['secure']))

{
echo "ok captcha";
echo $_SESSION["secure"];
exit();
}
else{
echo "error captcha";

}
}

?>


[/CODE]

insert.php


<?php
session_start();
?>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="../image/jquery.js"></script>
<meta http-equiv="X-UA-Compatible" content="IE=8" />

<script type="text/javascript">
$(document).ready(function(){
$("#change_captcha").click(function(){
$("#as_captcha").attr("src", "captch-ok.php?"+Math.random());

});
});

$(document).ready(function() {
$("#reg").click(function(){
$("#result").html('<strong>لطفا صبر نمایید</strong>');
var reg=$("#reg").val();
var captcha=$("#captcha").val();
$.post("ins.php",{reg:reg,captcha:captcha},function(data) {$("#result").html(data);});
});
$("#reg").click(function(){
$("#as_captcha").attr("src", "captch-ok.php?"+Math.random());


});


});
</script>

</head>
<body>
<div id="result" style="position: absolute; left: 60px; width: 94px; height: 86px; top: 208px;"></div>
<div>
<input type="text" id="captcha" >
</p>
<a id="change_captcha" style="cursor:pointer;color: #069FDF;">Can't read? try another one</a>
<input type="button" name="btn" id="reg" value="ثبت"style=" left: 907px; top: 567px;">
</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="captch-ok.php" alt="captcha" id="as_captcha"/></p>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
</body>
</html>

DR.HTML
سه شنبه 22 مهر 1393, 11:26 صبح
توی ins چرا دووبار php باز شده و فرم ورودیتون کجاست ؟

abbas27
سه شنبه 22 مهر 1393, 12:13 عصر
فرم ورودی هم گذاشتم

DR.HTML
سه شنبه 22 مهر 1393, 13:11 عصر
دوست عزیز کداتون خیلی به هم ریختست مثلا
<img src="captcha/Captcha.php" alt="captcha" id="as_captcha"/>

این مسیر کجاست ؟ چون captcah_ok داره میسازه تصویرو یعنی یه برنامه کاملا اسپاگتی , خواستین من از بیس یه کپچا ساده براتون میسازم اما با این شکل کد نویس بعید میدونم به هدفتون برسید

abbas27
سه شنبه 22 مهر 1393, 14:54 عصر
آقا شرمنده حالا همش رو ویرایش کردم الان کدای صحیح رو گذاشتم ببینید مشکل از کجاس

abbas27
سه شنبه 22 مهر 1393, 21:13 عصر
یکی پیدا نمیشه جواب بده؟این همه مهندس داریما

DR.HTML
سه شنبه 22 مهر 1393, 23:21 عصر
من کدتون رو بررسی کردم مشکلی نداشت و همه جواباش درست بود اما درصورتی شما به مشکل بر میخورید احتمال زیاد مشکل از js هستش که باعث میشه بعضی وقتها دوبار اجرا بشه و دوتا کد ساخته بشه و چون شما اولیو میبینید و میزنید میگه که درست نیست در کل کد نویسی قسمت js رو ببینید مثلا
$(document).ready(function()

چرا دوبار نوشته شده ؟ مگه هی فایل چند بار اماده میشه ؟ در هر صورت کد php مشکلی نداشت

abbas27
چهارشنبه 23 مهر 1393, 00:09 صبح
ممنون دوست گرامی.درسته کد phpمشکل نداره.هر چی هس از jqeryهستش.یعنی من قسمت document... رو ی بار فراخوانی کنم حل میشه؟

DR.HTML
چهارشنبه 23 مهر 1393, 09:34 صبح
ببینید شما سعی کنید اونرو درست بنویسید باز م میم من حدود 30 بار تستش کردم و درست بود من تا مشلو نبینم که نمیتونم بگم پیشنهاد من اینه کد رو ساده کنید و فقط قسمت Change رو بزارید بقیرو حذف کنید

abbas27
چهارشنبه 23 مهر 1393, 10:44 صبح
دکتر جون ممنون.از قسمت jquery بود حل شد/اینجوری نوشتمش حل شد/بازم ممنون ک جواب دادین





<script type="text/javascript">
$(document).ready(function(){
$("#change_captcha").click(function(){
$("#as_captcha").attr("src", "Captcha.php?"+Math.random()); });


$("#reg").click(function(){
$("#result").html('<strong>لطفا صبر نماییدpleas waith</strong>');
var reg=$("#reg").val();
var captcha=$("#captcha").val();
$.post("ins.php",{reg:reg,captcha:captcha},function(data) {$("#result").html(data);
$("#as_captcha").attr("src", "Captcha.php?"+Math.random());
});
});
});

</script>