使用影像處理技術產生驗證碼(PHP圖形映像的典型應用教程3)

來源:互聯網
上載者:User
使用影像處理技術產生驗證碼(PHP圖形映像的典型應用教程3)

驗證碼功能的實現方法很多,有數字驗證碼、圖形驗證碼和文字驗證碼等。在本節中介紹一種使用影像處理技術產生的驗證碼。

在上一篇文章《如何使用GD2函數在圖片上添加文字(PHP圖形映像的典型應用教程2)》中,我們介紹了如何在圖片中添加文字的介紹,那麼我們今天繼續給大家介紹如何使用映像技術產生驗證碼。

下面介紹使用影像處理技術產生驗證碼,具體代碼如下:

<?phpsession_start();// 告訴瀏覽器,這個檔案,是一個png圖片header('Content-type: image/png');// 建立映像$image = imagecreatetruecolor(50,20);// 填充顏色 - ps裡的點擊畫布填色imagefill($image,0,0,imagecolorallocate($image,149,188,205));//加入幹擾象素 , 迴圈100次for ($i = 0; $i < 100; $i++) {    $randcolor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));//畫像素點函數    imagesetpixel($image, rand(1, 55), rand(1,18), $randcolor);}// 設定顏色$red = imagecolorallocate($image, 255,255,255);$code = "";for( $i=1; $i <=4; $i++){    $rand_code = rand(1,9); // 產生1-9的隨機數    imagestring($image, 5, 5+($i-1)*10, 2, $rand_code,$red); // 將文字寫入圖片    $code .= $rand_code;}// 產生圖片imagepng($image);// 銷毀圖片, 釋放記憶體imagedestroy($image);?>

輸出結果為:

上面是最簡單的一個產生驗證碼的執行個體,下面我們介紹一個在日常開發中緊張用到的執行個體。具體步驟如下:

(1)建立一個checks.php檔案,在該檔案中使用GD2函數建立一個4位的驗證碼,並且將產生的驗證碼儲存在Session變數中,代碼如下:

<?phpsession_start();          //初始化Session變數header("content-type:image/png");        //設定建立映像的格式$image_width=70;                          //設定映像寬度$image_height=18;                          //設定映像高度srand(microtime()*100000);                //設定隨機數的種子for($i=0;$i<4;$i++){                      //迴圈輸出一個4位的隨機數    $new_number.=dechex(rand(0,15));}$_SESSION[check_checks]=$new_number;       //將擷取的隨機數驗證碼寫入到Session變數中$num_image=imagecreate($image_width,$image_height);    //建立一個畫布imagecolorallocate($num_image,255,255,255);         //設定畫布的顏色for($i=0;$i<strlen($_SESSION[check_checks]);$i++){     //迴圈讀取    Session變數中的驗證碼$font=mt_rand(3,5);                                //設定隨機的字型$x=mt_rand(1,8)+$image_width*$i/4;               //設定隨機字元所在位置的X座標$y=mt_rand(1,$image_height/4);                   //設定隨機字元所在位置的Y座標$color=imagecolorallocate($num_image,mt_rand(0,100),    mt_rand(0,150),mt_rand(0,200)); //設定字元的顏色imagestring($num_image,$font,$x,$y,$_SESSION[check_checks][$i],$color);   //水平輸出字元}imagepng($num_image);              //產生PNG格式的映像imagedestroy($num_image);          //釋放映像資源?>

在上面的代碼中,對驗證碼進行輸出時,每個字元的位置、顏色和字型都是通過隨機數來擷取的,可以在瀏覽器中產生各式各樣的驗證碼,還可以防止惡意使用者攻擊網站系統。

(2)建立一個使用者登入的表單,並調用checks.php檔案,在表單頁中輸出映像的內容,提交表單資訊,使用if條件陳述式判斷輸入的驗證碼是否正確。如果使用者填寫的驗證碼與隨機產生的驗證碼相等,則提示"使用者登入成功!",代碼如下:

<?phpsession_start();           //初始化Sessionif($_POST["Submit"]!=""){    $checks=$_POST["checks"];        //擷取驗證碼文字框的值    if($checks==""){           //如果驗證碼的值為空白,則彈出提示資訊        echo "<script> alert('驗證碼不可為空');window.location.href='index.php';</script>";    }//如果使用者輸入驗證碼的值與隨機產生的驗證碼的值相等,則彈出登入成功提示    if($checks==$_SESSION[check_checks]){        echo "<script> alert('使用者登入成功!');window.location.href='index.php';</script>";    }else{            //否則彈出驗證碼不正確的提示資訊        echo "<script> alert('您輸入的驗證碼不正確!');window.location.href='index.php';</script>";    }}?>

大家可以在自己的電腦上試一試,這裡就不貼出圖片了,關於使用影像處理技術產生驗證碼的內容就介紹到這裡了,下面我們將為大家介紹《使用GD2函數繪製幾何圖形(PHP圖形映像的典型應用教程4)》!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.