使用php的生成圖片驗證碼,有效避免機器訪問,減輕伺服器資源消耗 ...
圖文驗證碼的實現原理:
1):準備些許圖片將其存儲在資料庫,每一張圖片對應一個標識欄位。
2):在伺服器端使用數組的形式將圖片與標識欄位組合起來。
3):隨機給客戶端返回圖片,並接受用戶輸入的欄位。
4):將用戶輸入的欄位與伺服器存儲的與每張圖片的信息進行比對。
5):相同則通過,否則不通過。
a)第一步生成驗證碼
createCode.php
<?php header("content-type:text/html;charset=utf-8"); session_start();//開啟伺服器 存儲 $table=array( 'pic0'=>"貓", 'pic1'=>'狗', 'pic2'=>'猴', 'pic3'=>'魚' ); $index=rand(0,3);//生成隨機數 $value=$table['pic'.$index];//取出隨機值 $_SESSION['authcode']=$value;//將值存儲在伺服器端 $filename=dirname(__FILE__).'\\pic'.$index.'.jpg';//給出文件的地址 $content=file_get_contents($filename);//讀取文件的內容 ob_clean();//清除緩存 header("content-type:image/jpg");//規定以jpg的形式輸出圖片 echo $contents;//輸出圖片文件 ?>
b)使用驗證碼
useCode.php:
<?php header("content-type:text/html;charset=utf-8"); if(isset($_REQUEST["authcode"])){ session_start(); if($_SESSION['authcode']==$_REQUEST['authcode']){//$_REQUEST['authcode']..獲取輸入框的值 echo "<font>驗證通過</font>"; } else{ echo "<font>驗證失敗</font>"; } exit(); } ?>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>驗證碼正確</title> </head> </html> <body> <form action="useCode.php"> <p>驗證碼圖片: <img src="createCode.php?=<?php echo rand();?> onclick="this.src='createCode.php?+<?php rand(0,200)?>'" alt="" "> </p> <p>輸入驗證碼的內容: <input type="text" name="authcode" value=""> </p> <p> <input type="submit" value="提交"> </p> </form> </body>