• 【转】PHP实现验证码


    转自http://www.jb51.net/article/40341.htm

    新建一个captcha.php:

    //验证码类
    class Captcha {
     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);
     }
    }

    接着就是静态页的代码了:index.html

    <img id="captcha_img" border='1' src='./captcha.php style="100px; height:30px" />

    下载font字体到指定位置

    类中的代码为
    $this->font = dirname(__FILE__).'/font/elephant.ttf';
  • 相关阅读:
    oracle数据库创建后要做的事情
    (转)ORA-12519: TNS:no appropriate service handler found 的问题处理。
    oracle数据库出现“批处理中出现错误: ORA-00001: 违反唯一约束条件”解决方法
    oracle一点记录
    ora-01400 无法将NULL插入 ID 解决方法
    execl一个工作薄中有几个个工作表,将这几个个工作表分别保存到不同execl文件中
    cutpFTP设置步骤
    Oracle数据库备份与还原操作具体步骤
    redis的安装和pip连接
    微信授权登录
  • 原文地址:https://www.cnblogs.com/mangoVic/p/8143618.html
Copyright © 2020-2023  润新知