رفتن به مطلب

ساخت کپچا CAPTCHA با php


پست های پیشنهاد شده

با سلام و خسته نباشید

میخوام یک کپچا برای یک فرم بسازیم میخواستم ببینم چه چوری میشه این کار رو کرد من یک صفحه ورود دارم و ربطی هم به وردپرس نداره اصلا یه یوزر و یک پسورد دارم میخوام کد کپچا درست کنم واسه این قسمت لطفا راهنمایی یفرمایید

لینک به ارسال

روش‌های مختلفی برای این کار وجود داره:

1. شما میتونید از سرویس‌های آماده مثل reCaptcha و Captcha Media استفاده کنید که خیلی بهتره

2. شما میتونید یه عکس رو به صورت تصادفی فراخوانی کنید و البته پاسخ اون رو در سشن یا کوکی ذخیره کنید و بعد از ارسال فرم، چک کنید که درست وارد کرده یا نه.

البته کپچا کار نمیده کلاً چون محققان دانشگاه استنفورد ابزاری ساختن (البته در اختیار کسی نذاشتن) که حتی reCaptcha رو هم به راحتی تشخیص میده.

لینک به ارسال

مشکلی در استفاده ار reCaptcha گوگل دارید؟

بهتر همینه که از اون استفاده کنید - در غیر اینصورت می‌تونید image سازی کنید - که ...

لینک به ارسال

کدش رو دارم قرار میدم لطفا جاهایی که باید حدف کنم رو قرار بدید

ممنون

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>AsreElm.com PHP Tutorials</title>

<style type="text/css">

html,body,input{direction:rtl;font:.9em/1.7em Tahoma;}

input{margin:2px;padding:5px;}

p.captcha{font:1.8em/1.7em Tahoma;padding:8px; border:1px #000 solid; display:block; width:150px; height:40px;text-align:center;}

p.error{color:#f00;}

p.true{color:#093;}

fieldset{width:350px;}

legend{font:bold .9em/1.6em Tahoma, Geneva, sans-serif; color:#900; background:#FCF; border:1px #900 solid; padding:3px;}

</style>

</head>

<body>

<?php

if(isset($_POST['submit'])) {

$error = "N";

if( ($_POST['captcha']) != ($_POST['user_captcha']) ){

$error = "Y"; echo('<p class="error"> کد امنیتی را صحیح وارد نمایید!</p>');

}

else{

// دریافت اطلاعات مربوط به فیلدهای فرم

$name = $_POST['name'];

$user_email= $_POST['email'];

$message = $_POST['message'];

#################################

## آدرس ایمیل خود را برای دریافت#

## پیام ها در زیر وارد نمایید #

#################################

$email_to = " YOUR EMAIL ADDRESS "; // آدرس ایمیل گیرنده پیامها

$title = "موضوع ایمیلهای دریافتی در اینجا";

// بررسی صحت تکمیل فیلد ایمیل

if (! preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $user_email))

{$error = "Y"; echo('<p class="error">آدرس پست الکترونیک شما معتبر نمی باشد لطفا آن را بررسی نموده و دوباره امتحان کنید</p>'); }

//بخش ارسال مشخصات به ایمیل شما

$header = "From: $user_email\n"

. "Reply-To: $user_email\n";

$header .= "Content-Type: text/html; charset=UTF-8\n";

$subject = '=?UTF-8?B?'.base64_encode($title).'?=';

$message = "نام و نام خانوادگی: $name\n"

. "پست الکترونیک: $user_email\n"

. "متن پیام: $message\n";

if ( $error === "N" ) {

@mail($email_to, $subject ,$message ,$header ) ;

// نمایش پیام

echo '<p class="true"> با تشکر ، پیام شما با موفقیت ارسال گردید </p>';}

}

}

function Random(){

$length=5; // تعداد حروف و اعداد که برای کاربر نمایش داده میشوند

$str = "123456789abcdefghijklmnpqrstuvwxyz";

$max = strlen($str)-1;

$random="";

for ($i=0; $i<$length; $i++){

$number = mt_rand(0,$max);

$random.= substr($str,$number,1);}

return $random;

}

$random = Random();

?>

<fieldset>

<legend></legend>

<form action="" method="post">

<p> </p>

<p class="captcha"><?php echo $random;?></p>

<p>کد امنیتی نمایش داده شده در تصویر فوق را در فیلد زیر وارد نمایید</p>

<input type="text" name="user_captcha" style="direction:ltr" />

<input type="hidden" value="<?php echo $random; ?>" name="captcha" />

<br />

</form>

</fieldset>

<input type="submit" name="submit" value="ارسال" />

</body>

</html>

فقط کپچا رو میخوام

ویرایش شده توسط NESTED
لینک به ارسال

بهترین روش استفاده از کپچای آمادس مثل recaptcha که خیلی ایمن تر و سریع تره نسبت به کد نویسی

لینک به ارسال

آقای

NESTED

این کد رو به چه صورت با کدم ادغام کنم ؟

کد صفحه من

<?php

session_start();

if(isset($_POST['student_login'])){

$pcode= strtolower($_POST['code']);

$scode=strtolower($_SESSION['code']);

if($pcode===$scode){

echo 'true';

}else{

echo 'false';

}

}

?>

<script type="text/javascript" src="jquery-1.10.2.min.js"></script>

<script type="text/javascript">

$(function(){

$('#reload').on('click',function(){

$('#captcha').attr('src','captcha.php?cache='+new Date().getTime());

return false;

});

})(jQuery);

</script>

<?php

include_once('main.php');

if(!(isset($_SESSION[$user_session_name])))

{

$message="";

$redirect = $_REQUEST["redirect"];

if (isset($_POST["student_login"]))

{

//Check username and password

$username = $_POST["username"];

$password = md5($_POST["password"]);

$student = new ManageStudents();

$counts = $student->LoginStudent($username,$password);

if($counts!=1)

{

$message = _STUDENT_BAD_USERNAME_OR_PASSWORD;

}

else

{

/////////Login

$_SESSION[$user_session_name] = $username;

$_SESSION[$user_password_session_name] = $password;

if($redirect == "")

$redirect = "index.php";

header('Location: '.urldecode($redirect).'');

}

}

include_once('header.php');

//Show Login Form

echo '

<div id="st_login" style="margin-'.$align1.':-105px; '.$align1.':50%;">

<img src="img/logo.png" />

<form action="" method="post">

<div style="width:100%; height:25px;">

<label style="float:'.$align1,';">'._STUDENT_USERNAME.':</label>

<input style="float:'.$align2.';" class="input" type="text" name="username" dir="ltr" />

</div>

<br style="clear:both" />

<div style="width:100%; height:25px;">

<label style="float:'.$align1,';">'._STUDENT_PASSWORD.':</label>

<input style="float:'.$align2.';" class="input" type="password" name="password" dir="ltr" />

</div>

<img id="captcha" src="captcha.php">

<a id="reload" href="#">کد جدید</a>

<input type="text" name="code">

<br style="clear:both" />

<input type="hidden" name="redirect" value="'.$redirect.'" />

<span class="error">'.$message.'</span><br />

<div style=" text-align:left"><input type="submit" name="student_login" class="btn btn-primary" value="'._STUDENT_LOG_IN.'" /></div>';

if(!empty($user_homepage_message))

echo '<br /><div class="label" style="text-align:center;">'._SYSTEM_ADMIN_MESSAGES.'</div><br />'.$user_homepage_message.'<br /><hr />';

echo '

</div>';

include_once('footer.php');

}

else

{

header ("Refresh: 5; url=index.php");

echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'._ADMIN_LOGIN_YOU_HAVE_ALREADY_LOGGED_IN;

}

?>

لینک به ارسال

برو به http://forum.wp-parsi.com/topic/23655-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%DA%A9%D8%AF-captcha/page__st__10 اونجا کد رو قرار دادم اگه مشکلی داشتید مطرح کنید

لینک به ارسال

بزارید واضح تر توضیح بدم متوجه بشید

من از این آموزش کد رو برداشتم

http://themer.ir/tutorials/create-image-captcha-code-with-php

و این هم کد صفحه لوگین خودمه


<?php
include_once('main.php');
if(!(isset($_SESSION[$user_session_name])))
{
$message="";
$redirect = $_REQUEST["redirect"];
if (isset($_POST["student_login"]))
{
//Check username and password
$username = $_POST["username"];
$password = md5($_POST["password"]);
$student = new ManageStudents();
$counts = $student->LoginStudent($username,$password);

if($counts!=1)
{
$message = _STUDENT_BAD_USERNAME_OR_PASSWORD;
}
else
{
/////////Login
$_SESSION[$user_session_name] = $username;
$_SESSION[$user_password_session_name] = $password;
if($redirect == "")
$redirect = "index.php";
header('Location: '.urldecode($redirect).'');
}
}
include_once('header.php');
//Show Login Form
echo '
<div id="st_login" style="margin-'.$align1.':-105px; '.$align1.':50%;">
<img src="img/logo.png" />
<form action="" method="post">
<div style="width:100%; height:25px;">
<label style="float:'.$align1,';">'._STUDENT_USERNAME.':</label>
<input style="float:'.$align2.';" class="input" type="text" name="username" dir="ltr" />
</div>
<br style="clear:both" />
<div style="width:100%; height:45px;">
<label style="float:'.$align1,';">'._STUDENT_PASSWORD.':</label>
<input style="float:'.$align2.';" class="input" type="password" name="password" dir="ltr" /><br /><br /><br /></div>
<label style="float:'.$align1,';">'._STUDENT_CAPTCHA.':</label>
<img id="captcha" src="captcha.php"><br />
<a id="reload" href="#">کد جدید</a><br /><br />
<input type="text" name="code"><br /><br />

<br style="clear:both" />

<input type="hidden" name="redirect" value="'.$redirect.'" />
<span class="error">'.$message.'</span><br />

<div style=" text-align:left"><input type="submit" name="student_login" class="btn btn-primary" value="'._STUDENT_LOG_IN.'" /></div>';
if(!empty($user_homepage_message))
echo '<br /><div class="label" style="text-align:center;">'._SYSTEM_ADMIN_MESSAGES.'</div><br />'.$user_homepage_message.'<br /><hr />';

echo '
</div>';
include_once('footer.php');
}
else
{
header ("Refresh: 5; url=index.php");
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'._ADMIN_LOGIN_YOU_HAVE_ALREADY_LOGGED_IN;
}
?>

این سه خط هم که تو کد بالا واسه همون آموزشه هستش که لابه لای کدهام قرار دادم


<img id="captcha" src="captcha.php"><br />
<a id="reload" href="#">کد جدید</a><br /><br />
<input type="text" name="code"><br /><br />

توی کد های بالا موجود هستش

خالا من میخوام از لینکی که دادم بهتون اون بالا با کد خودم که باز در بالا مشاهده میکنید استفاده کنم یه صفحه ورود کپچا دار بسازم صفحه ورودرو دارم و فقط میخوام این دوتا رو ادغام کنم

حالا یکی بگه من چه جوری این کار رو انجام بدم ؟؟؟؟؟؟؟؟

لینک به ارسال

خب کنار فورم لاگینتون یک فایل به اسم captcha.php بسازین و کدهای زیر رو درونش قرار بدید


<?php
session_start();
header('Content-type: image/jpeg');
$text='QWERTYUIOPASDFGHJKLZXCVBNM123456789';
$code='';
for($i=1;$i<=6;$i++){
$start=mt_rand(1,strlen($text)-1);
$code.=substr($text,$start,1);
}
$_SESSION['code']=$code;
$font_size=30;
$image_width=200;
$image_height=60;
$image= imagecreate($image_width,$image_height);
imagecolorallocate($image,220,220,220);
$text_color= imagecolorallocate($image,0,0,0);
imagettftext($image, $font_size,0,30,45, $text_color,'font.ttf', $code);
imagejpeg($image);
?>

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...