辛星和您用更簡單的方式去實現(xiàn)PHP中的驗證碼
? ? ? ?說實話,提到驗證碼我想大家都不會陌生,確實,驗證碼還是挺常見的,現(xiàn)在搜索一下php的驗證碼類簡直是海量的數(shù)據(jù),那我們今天就來實現(xiàn)一個自己的驗證碼把,不過它比較簡單,這也是我說的用更簡單的方式去實現(xiàn)一個驗證碼。
? ? ? ?總的來說分成兩步,第一步就是先實現(xiàn)一個驗證碼,第二步就是通過這個驗證碼來進行驗證,我們先看一下如何去實現(xiàn)這個驗證碼,當然這里需要用到gd庫的知識,請看下面的代碼示例:
<?php//首先要開啟sessionsession_start();//說明這是一張圖片header("Content-type:image/png");//用來動態(tài)生成的數(shù)字和字母組合$str = "3,4,5,6,7,8,9,a,b,c,d,e,f,g";//轉(zhuǎn)化為數(shù)組$list = explode(",",$str);//得到該數(shù)組的下標的最大值$max = count($list) - 1;//用于表示該驗證碼$verify = "";//生成驗證碼字符串for($i = 0; $i <5;$i ++){ $rand = mt_rand(0,$max); $verify .= $list[$rand];}//寫入session$_SESSION['code'] = $verify;//生成一個58x28的圖片$im = imagecreate(58,28);//產(chǎn)生黑色$black = imagecolorallocate($im,0,0,0);//產(chǎn)生白色$white = imagecolorallocate($im,255,255,255);//先用白色背景把圖片刷成白色imagefill($im,0,0,$white);//然后把字符串寫到圖片上去imagestring($im,5,10,8,$verify,$black);//生成png圖片,并且顯示到屏幕上imagepng($im);//銷毀該圖片imagedestroy($im);
? ? ? 這里順便說一下畫圖的基本步驟把:首先創(chuàng)建一個圖像,我們用imagecreate函數(shù),然后用imagecolorallocate來調(diào)色,然后用各種imagexxx來繪制圖像,最后用imagexxx來生成各種樣式的圖片,最后imagedestroy來銷毀圖片,大致都是這么一個流程。其中我感覺比較值得一提的是imagestring的參數(shù),第一個表示繪畫的圖片這個沒的說,第二額參數(shù)表示的是字體,如果為0,1,2,3,4,5則表示內(nèi)置字體,第三個參數(shù)表示繪畫的左上角的x坐標,第四個表示繪畫的左上角的y坐標,第五個參數(shù)是顏色,我們這里采用了黑色來繪圖。
來看一下我們生成的圖片是什么樣子的把:
立即學習“PHP免費學習筆記(深入)”;
那么我們怎么使用該驗證碼呢?既然文件都寫好了,那么我們再寫一個文件來導入該驗證碼就可以了,然后從session里面來得到它的值,看如下代碼:
<html> <form action = "" method = "post"> <input type="text" name = "code" /> @@##@@ <button id = "change">更換</button><br /> <input type = "submit" value = "確定" /> </form> <script type="text/javascript"> document.getElementById("change").addEventListener("click",change); function change(){ //之所以加這個隨機數(shù)是為了兼容IE瀏覽器 document.getElementById("code").src ="ver.php?"+Math.random(); } </script></html><?phpsession_start();//一定要等post數(shù)據(jù)提交了在判斷,//否則一開始就會顯示信息if(isset($_POST['code'])){ if($_POST['code'] == $_SESSION['code']){ echo "驗證碼正確"; }else{ echo "驗證碼錯誤"; }}
看,當然,真正的工程要復雜的多,這里給出的是一個示例程序,希望我們一同進步。。
PHP怎么學習?PHP怎么入門?PHP在哪學?PHP怎么學才快?不用擔心,這里為大家提供了PHP速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號