رفتن به مطلب

ساخت ریکپچا در PHP


Mohsen_Nirouzad

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

 

___ اختصاصی ___

 

 

سلام دوستان خوبم،

فکر کنید که صفحه ای به نام index.html دارید که میخواید در صورتی یک فایل رو آپلود کنه که کد ریکپچا درست وارد شه.

یا فایل به نام captcha.php بسازید و کد زیر را وارد کنید:

 

 

<?phpecho ("<meta charset=\"UTF-8\">"); $image = @imagecreatetruecolor(120, 30) or die("مشکل در ساخت تصویر"); $background = imagecolorallocate($image, 0xFF, 0xFF, 0xFF); imagefill($image, 0, 0, $background); $linecolor = imagecolorallocate($image, 0xCC, 0xCC, 0xCC); $textcolor = imagecolorallocate($image, 0x33, 0x33, 0x33); for($i=0; $i < 6; $i++) {imagesetthickness($image, rand(1,3));imageline($image, 0, rand(0,30), 120, rand(0,30), $linecolor);}session_start(); $digit = ''; for($x = 15; $x <= 95; $x += 20) {$digit .= ($num = rand(0, 9));imagechar($image, rand(3, 5), $x, rand(2, 14), $num, $textcolor);} $_SESSION['digit'] = $digit; header('Content-type: image/png'); imagepng($image); imagedestroy($image);?>

 

 

خوب، در صفحه index.html این رو وارد کنید تا تصویر نشون داده شه: ( زیر فرم آپلود )

 

<img src="captcha.php" alt="captcha code" width="120" height="30" border="1"><p><input type="text" size="6" maxlength="5" name="captcha" value=""><br>

 

 

حالا کد زیر رو در هدر وارد کنید:

 

<script>function checkForm(e){return e.captcha.value.match(/^\d{5}$/)?!0:(alert("Please enter the CAPTCHA digits in the box provided"),e.captcha.focus(),!1)}</script>

 

 

و خاصیت زیر رو به form اضفه کنید:

onsubmit="return checkForm(this);"

 

تا فرم به شکل زیر در باید:

 

<form method="POST" action="form-handler" onsubmit="return checkForm(this);"></form>

 

 

و کد زیر رو به صفحه انجام عملیات ( upload.php ) اضافه کنید:

 

<?php if($_POST) {session_start();if($_POST['captcha'] != $_SESSION['digit']) die("Sorry, the CAPTCHA code entered was incorrect!");session_destroy();} ?>

 

تمام! اگر کد اشتباه وارد شود کاربر نمیتواند عملیات را انجام دهد.

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
×
×
  • اضافه کردن...