PHP開發驗證碼之驗證碼的使用

驗證碼的使用

新form表單

<?php
 
 if(isset($_REQUEST['code']))
 {
     session_start();
     if (strtolower($_REQUEST['code'])==$_SESSION['code'])
     {
         header('Content-type: text/html; charset=UTF8');
         echo '<font color="#0000CC">输入正确</font>';
     }
     else{
         header('Content-type: text/html; charset=UTF8');
         echo '<font color="#CC0000"><b>输入错误</b></font>';
     }
     exit();
 }
 
 ?>
 <!DOCTYPE html>
 <html>
 <head>
     <meta charset="utf-8"/>
     <title>确认验证</title>
 </head>
 <body>
 <form method="post" action="form.php">
     <p>验证码图片:<img id="captcha_img" border="1" src="captcha-2.php?r=<?php echo rand();?>" width="100" height="30">
 
     </p>
     <p>请输入图片的内容:<input type="text" name="code" value=""/></p>
     <p><input type="submit" value="提交" style="padding:6px 20px;"></p>
 </form>
 </body>
 </html>

程式碼解釋:

<?php
 
 if(isset($_REQUEST['code']))
 {
     session_start();
     if (strtolower($_REQUEST['code'])==$_SESSION['code'])
     {
         header('Content-type: text/html; charset=UTF8');
         echo '<font color="#0000CC">输入正确</font>';
     }
     else{
         header('Content-type: text/html; charset=UTF8');
         echo '<font color="#CC0000"><b>输入错误</b></font>';
     }
     exit();
 }
 
 ?>
 <!DOCTYPE html>
 <html>
 <head>
     <meta charset="utf-8"/>
     <title>确认验证</title>
 </head>
 <body>
 <form method="post" action="form.php">
     <p>验证码图片:
         <img src="captcha-2.php" alt="验证码,看不清楚,换一张"
          onclick="this.src = this.src + '?' + new Date().getTime();" />
     </p>
     <p>请输入图片的内容:<input type="text" name="code" value=""/></p>
     <p><input type="submit" value="提交" style="padding:6px 20px;"></p>
 </form>
 </body>
 </html>

做一個html驗證碼驗證頁面,透過post的提交方式,將提交的值傳給form.php文件,圖片引入captcha-2.php,

onclick="this.src = this.src + '?' + new Date().getTime();

每次點擊圖片隨機產生一張新的圖片。

<?php
 
 if(isset($_REQUEST['code']))
 {
     session_start();
     if (strtolower($_REQUEST['code'])==$_SESSION['code'])
     {
         header('Content-type: text/html; charset=UTF8');
         echo '<font color="#0000CC">输入正确</font>';
     }
     else{
         header('Content-type: text/html; charset=UTF8');
         echo '<font color="#CC0000"><b>输入错误</b></font>';
     }
     exit();
 }

php判斷,呼叫透過SESSION儲存的驗證訊息,判斷使用者的原始輸入和伺服器上儲存的資訊做對比,如果相等則輸入正確,如果不相等則輸入錯誤

至此數字字母驗證碼的製作完成。

繼續學習
||
<?php session_start(); $image = imagecreatetruecolor(100,30); $bgcolor = imagecolorallocate($image,255,255,255);//#FFFFFFFFFFFF imagefill($image,0,0,$bgcolor); $captch_code=""; for ($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data='abcdefghijklmnopqrstuvwxyz1234567890'; $fontcontent=substr($data,rand(0,strlen($data)),1); $captch_code.="$fontcontent"; $x = ($i * 100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); } $_SESSION['code']=$captch_code; for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor); } for($i=0;$i<5;$i++){ $linecolor = imagecolorallocate($image,rand(60,220),rand(60,220),rand(60,220)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor); } header('content-type: image/png'); imagepng($image); //销毁 imagedestroy($image); ?>