亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

全面解析PHP驗證碼的實現原理 附php驗證碼小案例

2020-03-22 18:02:44
字體:
來源:轉載
供稿:網友
然后在瀏覽器上Ctrl+F查找gd選項即可驗證自己有沒有裝這個拓展,如果沒有的話,還需要自己全裝一下這個拓展。 背景圖 imagecreatetruecolor 默認生成黑色背景 // 使用gd的imagecreatetruecolor();創建一張背景圖 $image = imagecreatetruecolor(100,30); // 在顯示這張圖片的時候一定要先聲明頭信息 header('content-type:image/png'); imagepng($image); // 釋放資源,銷毀執行對象 imagedestroy($image); imagecolorallocate 創建一個填充色,并用imagefill(image,x,y,color)方法來附著。 // 使用gd的imagecreatetruecolor();創建一張背景圖 $image = imagecreatetruecolor(100,30); // 生成填充色 $bgcolor = imagecolorallocate($image,255,255,255); // 將填充色填充到背景圖上 imagefill($image,0,0,$bgcolor); // 在顯示這張圖片的時候一定要先聲明頭信息 header('content-type:image/png'); imagepng($image); // 釋放資源,銷毀執行對象 imagedestroy($image); imagepng 在使用這個方法之前,一定要先設置頭信息,否則不會正常的顯示圖片
imagedestory(image) 適時的釋放資源會減輕對服務器請求的壓力。
簡易數字驗證碼 imagecolorallocate 生成顏色信息,方便待會的賦予處理。 $fontcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255)); imagestring 把內容信息寫到圖片的相應位置上。 imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); 增加識別干擾 //增加點 // 生成一些干擾的點,這里是200個 for($i=0;$i $i++){ $pointcolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imagesetpixel($image,rand(0,100),rand(0,30),$pointcolor); // 增加線 // 生成一些干擾線 這里是5個 for($i=0;$i $i++){ // 設置為淺色的線,防止喧賓奪主 $linecolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imageline($image,rand(0,99),rand(0,29),rand(0,99),rand(0,29),$linecolor); 數字字母混合驗證碼 // 使用gd的imagecreatetruecolor();創建一張背景圖 $image = imagecreatetruecolor(100,40); // 生成填充色 $bgcolor = imagecolorallocate($image,255,255,255); // 將填充色填充到背景圖上 imagefill($image,0,0,$bgcolor); //////// 生成隨機4位字母以及數字混合的驗證碼 for($i=0;$i $i++){ $fontsize = rand(6,8); $fontcolor = imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255)); // 為了避免用戶難于辨認,去掉了某些有歧義的字母和數字 $rawstr = 'abcdefghjkmnopqrstuvwxyz23456789ABCDEFGHJKLMNOPQRSTUVWXYZ'; $fontcontent = substr($rawstr,rand(0,strlen($rawstr)),1); // 避免生成的圖片重疊 $x += 20; $y = rand(10,20); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); // 生成一些干擾的點,這里是200個 for($i=0;$i $i++){ $pointcolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imagesetpixel($image,rand(0,100),rand(0,30),$pointcolor); // 生成一些干擾線 這里是4個 for($i=0;$i $i++){ // 設置為淺色的線,防止喧賓奪主 $linecolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imageline($image,rand(0,99),rand(0,29),rand(0,99),rand(0,29),$linecolor);
驗證的原理 驗證的過程就是客戶端輸入的驗證碼和存在于session域中的驗證碼進行對比。即: if(isset($_REQUEST['checkcode'])){ session_start(); if($_REQUEST['checkcode']==$_SESSION['checkcode']){ echo " font color='green' Success! /font }else{ echo " font color='red' Failed! /font exit(); 優化驗證 但是簡單的這樣驗證有一點不好的地方,那就是字母的大小寫容易出錯。所以我們要做一下轉換,將用戶輸入的數值全部變成小寫的。 if(strtolower($_REQUEST['checkcode'])==$_SESSION['checkcode']){···}
小案例 生成驗證碼 session_start();// 必須在php的最開始部分聲明,來開啟session
$fontsize = rand(6,8); $fontcolor = imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255)); // 為了避免用戶難于辨認,去掉了某些有歧義的字母和數字 $rawstr = 'abcdefghjkmnopqrstuvwxyz23456789'; $fontcontent = substr($rawstr,rand(0,strlen($rawstr)),1); // 拼接即將誕生的驗證碼 $checkcode.=$fontcontent; // 避免生成的圖片重疊 $x += 20; $y = rand(10,20); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); // 保存到session變量中 $_SESSION['checkcode']=$checkcode; // 生成一些干擾的點,這里是200個 for($i=0;$i $i++){ $pointcolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imagesetpixel($image,rand(0,100),rand(0,30),$pointcolor); // 生成一些干擾線 這里是4個 for($i=0;$i $i++){ // 設置為淺色的線,防止喧賓奪主 $linecolor = imagecolorallocate($image,rand(50,255),rand(50,255),rand(50,255)); imageline($image,rand(0,99),rand(0,29),rand(0,99),rand(0,29),$linecolor);
if(strtolower($_REQUEST['checkcode'])==$_SESSION['checkcode']){ echo " font color='green' Success! /font }else{ echo " font color='red' Failed! /font exit(); !DOCTYPE html html head meta charset="utf-8" / title 驗證驗證碼信息 /title script function change(){ document.getElementById("image_checkcode").src='./store.php r='+Math.random(); /script /head body form action="./form.php" method="post" p 驗證碼圖片: /p img id="image_checkcode" src="./store.php r= php echo rand(); " / a href="javascript:void(0)" 看不清楚 /a br/ 請輸入驗證碼 input type="text" name="checkcode" / br / p input type="submit" value="提交" / /p
使用php制作驗證碼需要gd拓展的支持。
使用imagecreatetruecolor方法生成背景色,并用imagefill填充一個由imagecolorallocate產生的顏色。
使用imagestring來實現驗證碼和背景圖的結合
使用imagesetpixel來添加干擾點
使用imageline來添加干擾線
使用session之前要在開頭開啟session_start()方法
使用JavaScript來動態的修改驗證碼的src,來滿足用戶“換一張”的需求。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持phpstudy。
PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综合天天综合网国产成人网| 国产精品视频午夜| 亚洲缚视频在线观看| 欧美电影免费看| 欧美一级电影久久| 久久99久国产精品黄毛片入口| 久久久久久中文| 亚洲系列中文字幕| 国产成人福利夜色影视| 亚洲一区二区三区乱码aⅴ| 国产欧美精品xxxx另类| 精品偷拍各种wc美女嘘嘘| 成人午夜在线影院| 性欧美在线看片a免费观看| 久久国产精品电影| 欧美激情a在线| 成人免费视频在线观看超级碰| 一区二区国产精品视频| 精品久久久久久久久中文字幕| 国产精品第一区| 亚洲国产成人久久综合一区| 亚洲自拍欧美色图| 国产精品专区一| 亚洲欧美日韩在线一区| 久久精品免费播放| 亚洲第一福利视频| 亚洲男人天天操| 欧美综合在线第二页| 136fldh精品导航福利| 黄网站色欧美视频| 欧美电影免费观看大全| 欧美电影免费观看高清| 福利视频导航一区| 91精品视频播放| 欧美午夜激情视频| 久久久久亚洲精品成人网小说| 亚洲黄色www网站| 国产福利精品在线| 91色视频在线导航| 亚洲精品福利视频| 91久久在线播放| 欧美日韩在线观看视频小说| 性日韩欧美在线视频| 综合av色偷偷网| 国产精品第三页| 欧美国产视频一区二区| 国产精品高精视频免费| 色综合视频网站| 国产成人啪精品视频免费网| 中文欧美在线视频| 国产精品一区二区在线| 秋霞成人午夜鲁丝一区二区三区| 热re91久久精品国99热蜜臀| 国产精品网址在线| 亚洲在线观看视频网站| 国产在线精品一区免费香蕉| 亚洲天堂网站在线观看视频| 欧美大奶子在线| 久久人人爽人人爽人人片av高请| 久久久国产精品x99av| 日本精品免费一区二区三区| 亚洲精品国产精品国产自| 亚洲国产天堂久久国产91| 欧美激情综合色综合啪啪五月| 日韩精品在线免费| 日韩69视频在线观看| 大荫蒂欧美视频另类xxxx| 亚洲亚裔videos黑人hd| 国产精品久久久久久av下载红粉| 69久久夜色精品国产7777| 亚洲xxxx在线| 成人疯狂猛交xxx| 亚洲一区制服诱惑| 色综合老司机第九色激情| 欧美国产日韩一区二区三区| 亚洲va欧美va国产综合剧情| 久久综合电影一区| 国产精品视频永久免费播放| 国产日本欧美一区| 韩日欧美一区二区| 亚洲欧美国产高清va在线播| 亚洲春色另类小说| 97**国产露脸精品国产| 伊人久久精品视频| 51ⅴ精品国产91久久久久久| 国产精品视频久久久| 91在线视频免费| 亚洲国产欧美自拍| 国产日韩欧美夫妻视频在线观看| 这里只有精品在线观看| 精品久久久久久久久国产字幕| 黄色一区二区在线观看| 色综合五月天导航| 性色av一区二区三区免费| 久久精品中文字幕电影| 国产suv精品一区二区三区88区| 亚洲第一色中文字幕| 2019中文字幕免费视频| 日韩高清有码在线| 欧美精品制服第一页| 91牛牛免费视频| 欧美激情2020午夜免费观看| 欧美自拍大量在线观看| 亚洲的天堂在线中文字幕| 一本大道亚洲视频| 亚洲嫩模很污视频| 亚洲综合精品一区二区| 亚洲另类激情图| 日韩欧美综合在线视频| 成人妇女淫片aaaa视频| 美日韩在线视频| 欧美日韩在线第一页| 日本一本a高清免费不卡| 91精品国产高清久久久久久久久| 成人国产精品色哟哟| 久久视频在线视频| 亚洲一级一级97网| 亚洲人高潮女人毛茸茸| 2018国产精品视频| 91爱视频在线| 国产一区二区日韩精品欧美精品| 一区二区成人av| 久久免费视频网站| 国产又爽又黄的激情精品视频| 91高潮精品免费porn| 黄色一区二区在线观看| 国产丝袜一区二区| 97国产suv精品一区二区62| 国产欧美精品xxxx另类| 亚洲成人动漫在线播放| 欧美日韩第一视频| 欧美美最猛性xxxxxx| 日韩中文字幕国产| 精品国产一区二区三区久久久| 1769国产精品| 韩国美女主播一区| 26uuu亚洲伊人春色| 一本大道香蕉久在线播放29| 亚洲男女自偷自拍图片另类| 国产成人久久久精品一区| 日韩有码在线播放| 亚洲国产精品va在线看黑人| 日本视频久久久| 日韩中文字幕在线观看| 成人国产精品久久久| 91国产中文字幕| 久久伊人免费视频| 欧美激情精品久久久久久免费印度| 蜜臀久久99精品久久久无需会员| 久久中文字幕一区| 亚洲夜晚福利在线观看| 69视频在线播放| 欧美性受xxxx黑人猛交| 九九热精品视频| 国内外成人免费激情在线视频网站| 精品视频在线播放免| 亚洲国产精品久久久| 亚洲精品91美女久久久久久久| 日韩中文视频免费在线观看| 综合网日日天干夜夜久久| 欧美综合在线第二页| 国产精品久久久久久久久久尿| 亚洲香蕉成人av网站在线观看| 国产精品激情av电影在线观看|