首页 > 编程 > PHP > 正文

一个好用的PHP验证码类实例分享

2020-03-22 16:48:24
字体:
来源:转载
供稿:网友
分享一个好用的php验证码类,包括调用示例。
说明:
如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法。用到了PHP GD库的相关知识。1,生成验证码的类 VerificationCode.html' target='_blank'>class.php
复制代码 代码如下:
?php
class VerificationCode{
private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789"; //随机因子
private $code; //验证码
private $codelen=4; //验证码长度
private $width=110; //宽度
private $height=30; //高度
private $img; //图像资源句柄
private $font; //制定字体
private $fontSize=25; //字体大小
private $fontColor; //字体颜色
public function __construct(){
$this- font="CALIBRIZ.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),$i*$x+mt_rand(1,5),$this- height/1.4,$this- fontColor,$this- font,$this- code[$i]); // www.phpstudy.net
//imagestring($this- img,5,$i*$x+mt_rand(1,5),5,$this- code[$i],$this- fontColor);
}
}
//生成线条、雪花
private function createDisturb(){
for ($i = 0; $i $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- width),mt_rand(0,$this- width),mt_rand(0,$this- width),$color);
}
for ($i = 0; $i 100; $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 showCode(){
$this- createBg();
$this- createCode();
$this- createDisturb();
$this- createFont();
$this- outPut();
}
//获取验证码
public function getCode(){
return strtolower($this- code);
}
}
?
code.php复制代码 代码如下:
?php
session_start();
require_once 'VerificationCode.class.php';
$code=new VerificationCode();
$_SESSION['code']=$code- getCode();
$code- showCode();
? 验证码: input type="text" name="code" / img src="code.php" /
PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表