跪求 ~~~验证码的设计完整版,在线等 求 验证码的设计完整版,在线等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哈哈~我就来题内话啦~我觉这个还算漂亮,给你参考下吧~session_start();$attr = $_GET['attr'];if($attr==='') die("Not null");class class_authcode{ public $authcode = ''; //验证码 private $width = ''; //验证码图片宽 private $height = ''; //验证码图片高 private $len = ''; //验证码长度 private $tilt = array(-30,30); //验证码倾斜角度 private $font = 'trebucbi.ttf'; //字体文件 private $str = ''; //验证码基 private $im = ''; //生成图片的句柄 //构造函数,生成验证码。 function __construct($width=100,$heigh=30,$len=4) { $this->width = $width; $this->height = $heigh; $this->len = $len; $this->str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; $str_len = strlen($this->str)-1; for ($i=0; $i<$len; $i++) { $this->authcode .= $this->str[rand(0,$str_len)]; } } //创建图片 private function imagecreate(){ $this->im = imagecreatetruecolor($this->width,$this->height); $red = imagecolorallocate($this->im, 38, 38, 45); imagefill($this->im, 0,0, $red); } //干扰颜色 private function ext_color() { return imagecolorallocate($this->im,rand(50, 250),rand(50, 200),rand(50, 200)); } //创建干扰点 private function ext_point() { for ($i=0; $i<$this->width*2; $i++) { imagesetpixel($this->im,rand(1,$this->width-1),rand(1,$this->height-1),$this->ext_color()); } } //创建干扰线 private function ext_line() { for ($i=0; $i<$this->len+4; $i++) { $x1 = rand(1,$this->width-1); $y1 = rand(1,$this->height-1); $x2 = rand(1,$this->width-1); $y2 = rand(1,$this->height-1); imageline($this->im,$x1,$y1,$x2,$y2,$this->ext_color()); } } //把验证码写入图片(不能和$this->imgstrfloat()同时使用) private function imgstr() { $old_x = 1; for ($i=0; $i<$this->len; $i++) { $fontsize = rand(5,15); //字体大小 $tmp_1 = $fontsize*2.5; $tmp_2 = $i>0 ? $tmp_1 : 0; $y = rand(1,$this->height/2); $x = rand($old_x+$tmp_2, ($i+1)*($this->width)/$this->len-$tmp_1); $old_x = $x; $color = imagecolorallocate($this->im,rand(200, 255),rand(200, 255),rand(200, 255)); imagestring($this->im,$fontsize,$x,$y,$this->authcode[$i],$color); } } //把验证码倾斜写入图片(不能和$this->imgstr()同时使用) private function imgstrfloat() { $old_x = 1; for ($i=0; $i<$this->len; $i++) { $fontfloat = rand($this->tilt[0],$this->tilt[1]); $fontsize = rand(12,22); //字体大小 $tmp_1 = $i>0 ? $fontsize : 0; $y = rand($fontsize+2, $this->height-2); $x = rand($old_x+$tmp_1+2, ($i+1)*($this->width)/$this->len-$fontsize-2); $old_x = $x; $color = imagecolorallocate($this->im, rand(64, 255), rand(75, 255), rand(128, 255)); imagettftext($this->im, $fontsize, $fontfloat, $x, $y, $color, $this->font, $this->authcode[$i]); } } //输出图片 function output() { $this->imagecreate(); //$this->imgstr(); $this->imgstrfloat(); $this->ext_point(); $this->ext_line(); header('content-type:image/png'); imagepng($this->im); imagedestroy($this->im); $_SESSION['']=$this->authcode; }}$tmp = new class_authcode();$tmp->output();我这个ttf字体文件,无法传上来,你下个字体文件放一起 dedecms如何进行单步调试 mysql 20W数据 1G大小 用like奇慢,求解决办法. 关于DISCUZ的一个问题 jquery curl在本地正常输出,访问在线URL一片空白 mysql导入数据的命令语句 session_destroy()无法注销; 求PHP4.0时尚编程百例光盘源码 关于数组输出格式的问题 php怎样调用javabean啊? 怎么知道一个类实例有什么方法和属性? session值无法传递 php
我就来题内话啦~我觉这个还算漂亮,给你参考下吧~session_start();
$attr = $_GET['attr'];
if($attr==='') die("Not null");
class class_authcode{
public $authcode = ''; //验证码
private $width = ''; //验证码图片宽
private $height = ''; //验证码图片高
private $len = ''; //验证码长度
private $tilt = array(-30,30); //验证码倾斜角度
private $font = 'trebucbi.ttf'; //字体文件
private $str = ''; //验证码基
private $im = ''; //生成图片的句柄 //构造函数,生成验证码。
function __construct($width=100,$heigh=30,$len=4) {
$this->width = $width;
$this->height = $heigh;
$this->len = $len;
$this->str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; $str_len = strlen($this->str)-1;
for ($i=0; $i<$len; $i++) {
$this->authcode .= $this->str[rand(0,$str_len)];
}
}
//创建图片
private function imagecreate(){
$this->im = imagecreatetruecolor($this->width,$this->height);
$red = imagecolorallocate($this->im, 38, 38, 45);
imagefill($this->im, 0,0, $red);
}
//干扰颜色
private function ext_color() {
return imagecolorallocate($this->im,rand(50, 250),rand(50, 200),rand(50, 200));
}
//创建干扰点
private function ext_point() {
for ($i=0; $i<$this->width*2; $i++) {
imagesetpixel($this->im,rand(1,$this->width-1),rand(1,$this->height-1),$this->ext_color());
}
}
//创建干扰线
private function ext_line() {
for ($i=0; $i<$this->len+4; $i++) {
$x1 = rand(1,$this->width-1);
$y1 = rand(1,$this->height-1);
$x2 = rand(1,$this->width-1);
$y2 = rand(1,$this->height-1);
imageline($this->im,$x1,$y1,$x2,$y2,$this->ext_color());
}
}
//把验证码写入图片(不能和$this->imgstrfloat()同时使用)
private function imgstr() {
$old_x = 1;
for ($i=0; $i<$this->len; $i++) {
$fontsize = rand(5,15); //字体大小
$tmp_1 = $fontsize*2.5;
$tmp_2 = $i>0 ? $tmp_1 : 0;
$y = rand(1,$this->height/2);
$x = rand($old_x+$tmp_2, ($i+1)*($this->width)/$this->len-$tmp_1);
$old_x = $x;
$color = imagecolorallocate($this->im,rand(200, 255),rand(200, 255),rand(200, 255));
imagestring($this->im,$fontsize,$x,$y,$this->authcode[$i],$color);
}
}
//把验证码倾斜写入图片(不能和$this->imgstr()同时使用)
private function imgstrfloat() {
$old_x = 1;
for ($i=0; $i<$this->len; $i++) {
$fontfloat = rand($this->tilt[0],$this->tilt[1]);
$fontsize = rand(12,22); //字体大小
$tmp_1 = $i>0 ? $fontsize : 0;
$y = rand($fontsize+2, $this->height-2);
$x = rand($old_x+$tmp_1+2, ($i+1)*($this->width)/$this->len-$fontsize-2);
$old_x = $x;
$color = imagecolorallocate($this->im, rand(64, 255), rand(75, 255), rand(128, 255));
imagettftext($this->im, $fontsize, $fontfloat, $x, $y, $color, $this->font, $this->authcode[$i]);
}
}
//输出图片
function output() {
$this->imagecreate();
//$this->imgstr();
$this->imgstrfloat();
$this->ext_point();
$this->ext_line();
header('content-type:image/png');
imagepng($this->im);
imagedestroy($this->im);
$_SESSION['']=$this->authcode;
}
}
$tmp = new class_authcode();
$tmp->output();我这个ttf字体文件,无法传上来,你下个字体文件放一起