php驗證碼圖片無法顯示
ValidateCode.class.php代碼如下
//驗證碼類
class?ValidateCode?{
?private?$charset?=?'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//隨機因子
?private?$code;//驗證碼
?private?$codelen?=?4;//驗證碼長度
?private?$width?=?130;//寬度
?private?$height?=?50;//高度
?private?$img;//圖形資源句柄
?private?$font;//指定的字體
?private?$fontsize?=?20;//指定字體大小
?private?$fontcolor;//指定字體顏色
?//構(gòu)造方法初始化
?public?function?__construct()?{
??$this->font?=?dirname(__FILE__).'/font/elephant.ttf';//注意字體路徑要寫對,否則顯示不了圖片
?}
?//生成隨機碼
?private?function?createCode()?{
??$_len?=?strlen($this->charset)-1;
??for?($i=0;$icodelen;$i++)?{
???$this->code?.=?$this->charset[mt_rand(0,$_len)];
??}
?}
?//生成背景
?private?function?createBg()?{
??$this->img?=?imagecreatetruecolor($this->width,?$this->height);
??$color?=?imagecolorallocate($this->img,?mt_rand(157,255),?mt_rand(157,255),?mt_rand(157,255));
??imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
?}
?//生成文字
?private?function?createFont()?{
??$_x?=?$this->width?/?$this->codelen;
??for?($i=0;$icodelen;$i++)?{
???$this->fontcolor?=?imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
???imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height?/?1.4,$this->fontcolor,$this->font,$this->code[$i]);
??}
?}
?//生成線條、雪花
?private?function?createLine()?{
??//線條
??for?($i=0;$i???$color?=?imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
???imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
??}
??//雪花
??for?($i=0;$i???$color?=?imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
???imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
??}
?}
?//輸出
?private?function?outPut()?{
??header('Content-type:image/png');
??imagepng($this->img);
??imagedestroy($this->img);
?}
?//對外生成
?public?function?doimg()?{
??$this->createBg();
??$this->createCode();
??$this->createLine();
??$this->createFont();
??$this->outPut();
?}
?//獲取驗證碼
?public?function?getCode()?{
??return?strtolower($this->code);
?}
}
captcha.php代碼如下
session_start();
require?'./ValidateCode.class.php';??//先把類包含進來,實際路徑根據(jù)實際情況進行修改。
$_vc?=?new?ValidateCode();??//實例化一個對象
$_vc->doimg();??
$_SESSION['authnum_session']?=?$_vc->getCode();//驗證碼保存到SESSION中
index.php代碼如下
session_start();
//在頁首先要開啟session,
//error_reporting(2047);
session_destroy();
//將session去掉,以每次都能取新的session值;
//用seesion?效果不錯,也很方便
?>
PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號