PHP 验证码 高洛峰 细说PHP
生活随笔
收集整理的這篇文章主要介紹了
PHP 验证码 高洛峰 细说PHP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前端頁面index.php
<?php header('content-type:text/html;charset=utf-8'); if(isset($_POST['dosubmit'])){session_start();if(strtoupper($_SESSION['code'])?==?strtoupper($_POST['code'])){echo?'輸入成功!<br/>';}else{echo?'輸入不對<br/>';} } ?> <form?action="index.php"?method="post"> 用戶名:<input?type="text"?name="username"?value=""/><br/> 標題:<input?type="text"?name="title"?value=""/><br/> 內容:<textarea?name="content"?cols="40"?rows="4"></textarea><br/> 驗證碼:<input?type="text"?size="4"?name="code"><img?src="test.php"?onclick?="this.src='test.php?'+Math.random()"/><br/> <input?type="submit"?name="dosubmit"?value="留言"/> </form>生成驗證碼圖片test.php
<?php?//開啟sessionsession_start();require?'print.php';//導入驗證碼類文件$vcode?=new?Vcode(80,30,4);//實例化驗證碼類//將驗證碼放到服務器自己的空間保存一份$_SESSION['code']?=?$vcode->getCode();//將驗證碼的圖片輸出$vcode->outimg();//調用方法驗證碼類 print.php
<?php?class?Vcode{private?$width;?????????//寬private?$heigth;????????//高private?$num;???????????//數量private?$code;??????????//驗證碼private?$img;???????????//圖像資源//構造方法function?__construct($width=80,$height=25,$num=4){$this->width????????=???$width;$this->heigth???????=???$height;$this->num??????????=???$num;$this->code????????=???$this->createCode();}//獲取字符的驗證碼function?getCode(){return?$this->code;}//輸出驗證碼圖形function?outimg(){//創建背景?顏色?大小?邊框$this->createBack();???????????//畫字?大小?字體顏色$this->outString();//干擾元素?點?線條$this->setDisturb();//輸出圖像$this->printImg();}//創建背景private?function?createBack(){//創建資源$this->img?=?p_w_picpathcreatetruecolor($this->width,?$this->heigth);//設置隨機背景顏色$bgcolor?=?p_w_picpathcolorallocate($this->img,?rand(225,?255),?rand(225,?255),?rand(225,?255));//填充背景色p_w_picpathfill($this->img,?0,?0,?$bgcolor);//畫矩形$bordercolor?=?p_w_picpathcolorallocate($this->img,?0,?0,?0);p_w_picpathrectangle($this->img,?0,?0,?$this->width-1,?$this->heigth-1,?$bordercolor);}//畫字private?function??outString(){for($i=0;$i<$this->num;$i++){????????????????????????$color??=???p_w_picpathcolorallocate($this->img,?rand(0,?128),?rand(0,?128),?rand(0,?128));$font?=?rand(3,5);$x?=?3?+?($this->width/$this->num)*$i;$y?=?rand(1,?5);p_w_picpathstring($this->img,?$font,$x,?$y,?$this->code{$i},?$color);}}//設置干擾元素private?function?setDisturb(){//加上點數for($i=0;$i<100;$i++){$color??=???p_w_picpathcolorallocate($this->img,?rand(0,?255),?rand(0,?255),?rand(0,?255));p_w_picpathsetpixel($this->img,?rand(1,?$this->width-2),?rand(1,?$this->heigth-2),?$color);}//加上線條for($i=0;$i<10;$i++){$color??=???p_w_picpathcolorallocate($this->img,?rand(0,?255),?rand(0,?128),?rand(0,?255));p_w_picpatharc($this->img,?rand(-10,?$this->width+10),?rand(-10,?$this->heigth+10),?rand(30,?300),?rand(30,?300),?55,?44,?$color);}}//輸出圖像private?function?printImg(){//??????header("Content-Type:p_w_picpath/jpeg");//?????p_w_picpathjpeg($this->img);if(p_w_picpathtypes()?&?IMG_GIF){header("Content-Type:p_w_picpath/gif");p_w_picpathjpeg($this->img);}elseif(p_w_picpathtypes()?&?IMG_JPEG){header("Content-Type:p_w_picpath/jpeg");p_w_picpathjpeg($this->img);}elseif(p_w_picpathtypes()?&?IMG_JPG){header("Content-Type:p_w_picpath/jpg");p_w_picpathjpeg($this->img);}elseif(p_w_picpathtypes()?&?IMG_PNG){header("Content-Type:p_w_picpath/png");p_w_picpathjpeg($this->img);}}//生成驗證碼private?function??createCode(){$codes?=?"23456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";$code?=?"";for($i=0;$i<$this->num;$i++){$code?.=$codes{rand(0,strlen($codes)-1)};}return?$code;}//釋放圖像資源function?__destruct(){p_w_picpathdestroy($this->img);}}轉載于:https://blog.51cto.com/11410485/1842156
總結
以上是生活随笔為你收集整理的PHP 验证码 高洛峰 细说PHP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016/08/24 CppCon 20
- 下一篇: gulp安装说明