代码如下:<?php
//验证码类
class ValidateCode {
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789'; //随机因子
private $code; //验证码
private $codelen = 4; //验证码长度
private $width = 100; //宽度
private $height = 30; //高度
private $img; //图形资源句柄
private $font; //指定的字体
private $fontsize = 16; //指定字体大小
private $fontcolor; //指定字体颜色 //构造方法初始化
public function __construct() {
$this->font = ROOT_PATH.'/font/elephant.ttf';
} //生成随机码
private function createCode() {
$_len = strlen($this->charset)-1;
for ($i=0;$i<$this->codelen;$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;$i<$this->codelen;$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<25;$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<80;$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); //帮我看看这个人值取到的是空值????????
}
}
?>
//验证码类
class ValidateCode {
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789'; //随机因子
private $code; //验证码
private $codelen = 4; //验证码长度
private $width = 100; //宽度
private $height = 30; //高度
private $img; //图形资源句柄
private $font; //指定的字体
private $fontsize = 16; //指定字体大小
private $fontcolor; //指定字体颜色 //构造方法初始化
public function __construct() {
$this->font = ROOT_PATH.'/font/elephant.ttf';
} //生成随机码
private function createCode() {
$_len = strlen($this->charset)-1;
for ($i=0;$i<$this->codelen;$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;$i<$this->codelen;$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<25;$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<80;$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); //帮我看看这个人值取到的是空值????????
}
}
?>
解决方案 »
- PHP有哪些优点?用的人还多吗?
- 大家知道怎么让腾讯、搜狐、新浪的用户登录我自己的站呢
- 如何在dreamweaver中使用两个关键字进行搜索,找到我想要的东西。
- windows下PHP的奇怪的问题
- 急着做一简单企业网站,现在企业网站可以下载模板吗?
- 站仿制好了,就剩下个网站地图了,
- 关于多个项目代码管理的问题
- PHP中给AJAX传回的数据类型是JSON的一点困惑
- 网站被黑 <div style="display:none">找半天都找不到 求救命
- php 操作mongodb 关于操作符 $slice $elemmatch的用法
- fwrite(): send of 16 bytes failed with errno=1 Operation not permitted
- php显示源码问题
<?php
//checkNum.php
session_start();
$num1=$_SESSION[code];
function random($len)
{
$srcstr="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
mt_srand();
$strs="";
for($i=0;$i< $len;$i++){
$strs.=$srcstr[mt_rand(0,33)];
}
return strtoupper($strs);
}$str=random(4);
//随机生成的字符串
$width = 50; //验证码图片的宽度
$height = 25; //验证码图片的高度
@header("Content-Type:image/png");
$_SESSION["code"] = $str;
//echo $str;
$im=imagecreate($width,$height);
//背景色
$back=imagecolorallocate($im,0xFF,0xFF,0xFF);
//模糊点颜色
$pix=imagecolorallocate($im,187,230,247);
//字体色
$font=imagecolorallocate($im,41,163,238);
//绘模糊作用的点
mt_srand();
for($i=0;$i<1000;$i++)
{
imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);
}
imagestring($im, 5, 7, 5,$str,$font);
imagerectangle($im,0,0,$width-1,$height-1,$font);
imagepng($im);
imagedestroy($im);
$_SESSION["code"] = $str;
?>
session_start();
$p = new ValidateCode;
$p->doimg();
$_SESSION['code'] = $p->getCode();
你这个类写得有点顾此失彼了
我一开始还以为是没调对,昨天下午弄了一个下午,后来在类里面直接调用这个函数,里面的成员变量$this->code得到的是初始变量空呀?
//获取验证码
public function getCode() {
return strtolower($this->code);
//$this->createCode();
}