رحمت حاجی سعدین

سایت شخصی رحمت حاجی سعدین


ساخت کپچا ساده عملیات ریاضی با php

سلام و درود . امیدوارم حالتون خوب باشه هر چند میدونم این روزا حال خوب داشتن امری است نه غیر ممکن ولی اندکی سخت . احوال خودمم زیاد جالب نیست ولی خب بریم سراغ آموزشی که براتون در نظر گرفتم امشب! خب در این آموزش می خوایم با هم یه کپچا ساده با عملیات ریاضی رو بسازیم . کپچا همون کد امنیتی خودمونه که از ارسال اسپم توسط رباتها و افراد جلوگیری می کند.خب برای ساخت چنین چیزی ابتدا باید بیایم یه تابع بنویسیم که اعداد تصادفی تولید کنه و ساده ترین حالت ممکن برای این کار به صورت زیر هستش.

  • با استفاده از تابع rand در PHP ، می توانیم اعداد تصادفی تولید کنیم. اگر درون پرانتز تابع rand ، هیچ عددی ننویسیم، آنگاه یک عدد دلخواه را بر می گرداند (حداکثر و حداقلی برای آن تعیین نکرده ایم)، اما ما می توانیم حداکثر و حداقل مجاز برای تولید عدد تصادفی را تعیین کنیم که این دو مقدار را باید درون پرانتز تابع rand بنویسیم
  • مثال:در مثال زیر چون داخل تابع rand هیچ مقداری مشخص نکردیم طبیعتا تعداد ارقام تولید در هر بار مشابه نخواهد بود
<?php
$B=rand();
echo($B);
?>
  • اگر بخواهیم محدوده مشخص کنیم باید داخل پرانتز rand مقدار maxوmin را مشخص کنیم مثال:
<?php
$B=rand(0,9);
echo($B);
?>
  • خب من در مثال بالا محدوده اعداد تصادفی رو بین 0تا9 تعریف کردم.شما میتونید به دلخواه خودتون تعین کنید

خب بریم سراغ تابع اصلی که اعداد تصادفی رو برا ما می سازه

<?php
$x=rand(0,9);
$y=rand(0,9);
$z=$x*$y;
?>
  • من داخل قطعه کد بالا گفتم که : $x یک عدد تصادفی بین (0,9) و $y نیز یک عدد تصادفی بین (0,9) تولید کند و در آخر گفتم $z بیاد و مقادیر تولیدی توسط $x و $y رو در هم ضرب کنه !

خب حالا نوبت ساخت فرممون هستش که من با bootstrap ساختمش

<form action="" method="post">
<div class="form-group">
<label for="exampleInput">کد امنیتی</label>
<input type="text" class="form-control" name="user_captcha" placeholder="<?php echo $x;?>*<?php echo $y;?>">
<input type="hidden" value="<?php echo $z; ?>" name="captcha">
</div>
  <button type="submit" name="submit" class="btn btn-primary">ارسال</button>
</form>   
  • و در نهایت باید مقادیری که توسط فرم ارسال می شه چک بشه که آیا کد امنیتی درست هستش یا نه!
<?php
		if(isset($_POST['submit'])) {
		if(($_POST['captcha']) != ($_POST['user_captcha'])){
			  echo('<p class="container alert alert-danger" role="alert"> کد امنیتی را صحیح وارد نمایید!</p>'); 
		}
		else {
			echo('<p class="container alert alert-success" role="alert"> کپچا درست است</p>');
		}
		}
?>

فرم نهایی به صورت زیر هستش

<!DOCTYPE html>
<html>
<head>
	<title>نمونه کپچا - رحمت حاجی سعدین</title>
<link rel="stylesheet" href="https://cdn.rtlcss.com/bootstrap/v4.2.1/css/bootstrap.min.css" integrity="sha384-vus3nQHTD+5mpDiZ4rkEPlnkcyTP+49BhJ4wJeJunw06ZAp+wzzeBPUXr42fi8If" crossorigin="anonymous"></head>
<body>

	

<div class="container">

	<div class="alert alert-dark" role="alert">
کپچای ساده</div>

<?php
$x=rand(0,9);
$y=rand(0,9);
$z=$x*$y;
?>
<?php
		if(isset($_POST['submit'])) {
		if(($_POST['captcha']) != ($_POST['user_captcha'])){
			
			  echo('<p class="container alert alert-danger" role="alert"> کد امنیتی را صحیح وارد نمایید!</p>'); 
		}
		else {
			echo('<p class="container alert alert-success" role="alert"> کپچا درست است</p>');
		}

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

  <div class="form-group">
    <label for="exampleInput">کد امنیتی</label>
    <input type="text" class="form-control" name="user_captcha" placeholder="<?php echo $x;?>*<?php echo $y;?>">
    <input type="hidden" value="<?php echo $z; ?>" name="captcha">
  </div>

  <button type="submit" name="submit" class="btn btn-primary">ارسال</button>
</form>   

 </div>

</body>
</html>
  • پ.ن:در این فرم من از ضرب استفاده کردم برای عملیات کپچا شما می تونید به دلخواه خودتون از جمع،تفریت یا تقسیم استفاده کنید
  • پ.ن2:البته برای تقسیم باید یه سری محدودیت ها ایجاد کنید!!!

امیدوارم مطلب مفید واقع شده باشد و اندکی به دانش برنامه نویسی شما اضافه کرده باشد

و در پایان سورسش رو براتون قرار می دم تا اگه مشکلی بود برطرف شه:)

به زودی کپچای پیشرفته تری رو آموزش میدم براتون

 

دانلود فایل-حجم :2KB

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

سلام ، به گرد پای شما نمیرسم 

اوه چه جالب رسما عاشقش شدم 😀😀

به ابزار های کاربردیم اضافه کردیم ممنون ازت :)

خوشحالم که اینو می شنوم :) موفق باشی
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
سایت شخصی رحمت حاجی سعدین
دانلود قالب بلاگ
آموزش بلاگ نویسی
دست نوشته ها و ...
پیوندها
Designed By Erfan Powered by Bayan