您当前的位置: 首页 > 网站编程 > PHP教程 > PHP验证码类实例

PHP验证码类实例

作者:不详 来源:网络 发布时间: 2014-08-14 21:32 点击:
这篇文章主要介绍了一个好用的PHP验证码类实例,有需要的朋友可以参考一下 分享一个好用的php验证码类,包括调用示例。 说明: 如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Font

PHP验证码类实例

  这篇文章主要介绍了一个好用的PHP验证码类实例,有需要的朋友可以参考一下

  分享一个好用的php验证码类,包括调用示例。

  说明:

  如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

  参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法。用到了PHP GD库的相关知识。

  1,生成验证码的类 VerificationCode.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.jbxue.com

  //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);

  }

  }

  //生成线条、雪花

  private function createDisturb(){

  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->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" onclick="javascript:this.src='code.php?time='+Math.random();" />
分享到:
本文"PHP验证码类实例"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4