用PHP设计一个验证码类 并在面使用
来源:互联网 发布:js中的深拷贝和浅拷贝 编辑:程序博客网 时间:2024/05/19 18:15
设计一个PHP验证码类,在需要的时候可以随时调用
验证码类,保存为ValidateCode.class.php
- <?php
- //验证码类
- session_start();
- 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;//指定字体颜色
- //构造方法初始化
- public function __construct() {
- $this->font = './latha.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<6;$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<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 doimg() {
- $this->createBg();
- $this->createCode();
- $this->createLine();
- $this->createFont();
- $this->outPut();
- }
- //获取验证码
- public function getCode() {
- return strtolower($this->code);
- }
- }
注意:第16行中,要修改字体的路径,否则字体图片无法显示
实现,保存为captcha.php
- session_start();
- require './ValidateCode.class.php'; //先把类包含进来,实际路径根据实际情况进行修改。
- $_vc = new ValidateCode(); //实例化一个对象
- $_vc->doimg();
- $_SESSION['authnum_session'] = $_vc->getCode();//验证码保存到SESSION中
页面使用
- <img title="点击刷新" src="./captcha.php" align="absbottom" onclick="this.src='captcha.php?'+Math.random();"></img>
转载自http://www.uphtm.com/php/239.html
0 0
- 用PHP设计一个验证码类 并在面使用
- 使用PHP制作一个验证码
- php生成验证码并显示在浏览器
- php 设计经典类验证码
- 用servlet在网页生成验证码并验证
- 一个PHP验证码类与实例
- 【PHP】一个简单的验证码类
- php 一个验证码类的改写
- 一个漂亮的php验证码类
- 一个PHP实现的验证码类
- 在linux环境下尝试使用gcc编译一个程序,并验证-E\-S\-c选项
- 如何在QML应用中设计一个C++ Model并使用它
- 如何在一个项目中完美融入GreenDao并使用Facde设计模式操作数据库
- php 生成图片验证码 并表单验证
- php 生成图片验证码,并表单验证
- 使用PHP-curl获取验证码并模拟登录教务系统
- 类实例_一个验证码类c_checkCodePic.php
- 用php写的一个很不错的验证码
- OpenLayer基础学习
- 串口收到数据到无线发射数据的过程
- 在mySQL中新建视图执行报错 1060?
- Linux 套接字编程中的 5 个隐患
- SElinux-2
- 用PHP设计一个验证码类 并在面使用
- OpenStack源码系列---起始篇
- CentOS6.4下编译安装配置nginx1.2.3+php5.3.16+mysql5.5.27+memcached1.4.5
- 持续集成 之 apache-continuum
- java读取excel中的日期
- SElinux-3
- 双向数据bind的探究(-)-jquery实现
- 第五周上机项目3 用多文件组织多个类的程序
- 4-08:判断子树