php语言 百分网手机站

一个漂亮的php验证码类

时间:2020-10-09 20:45:20 php语言 我要投稿

一个漂亮的php验证码类

  编程的魅力在于可以实现想要的功能,下面小编就为大家分享一个漂亮的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;//指定字体颜色

  //构造方法初始化

  public function __construct() {

  $this->font = dirname(__FILE__).'/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<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);

  }

  }

  输出实例:

  使用方法:

  1、先把验证码类保存为一个名为 ValidateCode.class.php 的文件;

  2、新建一个名为 captcha.php 的文件进行调用该类;

  captcha.php

  代码如下:

  session_start();

  require './ValidateCode.class.php'; //先把类包含进来,实际路径根据实际情况进行修改。

  $_vc = new ValidateCode(); //实例化一个对象

  $_vc->doimg();

  $_SESSION['authnum_session'] = $_vc->getCode();//验证码保存到SESSION中

  3、引用到页面中,代码如下:

  代码如下:

  4、一个完整的验证页面,代码如下:

  代码如下:

  session_start();

  //在页首先要开启session,

  //error_reporting(2047);

  session_destroy();

  //将session去掉,以每次都能取新的session值;

  //用seesion 效果不错,也很方便

  ?>

  此例为session验证实例

  验证码:

  //打印上一个session;

  //echo "上一个session:".$_SESSION["authnum_session"]."

  ";

  $validate="";

  if(isset($_POST["validate"])){

  $validate=$_POST["validate"];

  echo "您刚才输入的是:".$_POST["validate"]."

  状态:";

  if($validate!=$_SESSION["authnum_session"]){

  //判断session值与用户输入的验证码是否一致;

  echo "输入有误";

  }else{

  echo "通过验证";

  }

  }

  ?>

【一个漂亮的php验证码类】相关文章:

1.php如何实现验证码

2.php实现验证码制作

3.PHP创建漂亮图表的步骤

4.PHP排序算法类讲解

5.php调用父类方法

6.PHP经典常用特效类代码

7.PHP类和对象的相关函数讲解

8.PHP中的类与对象入门知识

9.PHP封装数据库操作类