php语言

仿照TP框架自带的PHP验证码类

时间:2024-10-22 17:01:48 php语言 我要投稿
  • 相关推荐

仿照TP框架自带的PHP验证码类

  以下百分网小编整理的仿照TP框架自带的PHP验证码类,大家自己导入字体,可以按照自己的额需要随便修改。,更多信息请关注应届毕业生网!
  <?php
  class Imagecode{
  private $width ;
  private $height;
  private $counts;
  private $distrubcode;
  private $fonturl;
  private $session;
  function __construct($width = 120,$height = 30,$counts = 5,$distrubcode="1235467890qwertyuipkjhgfdaszxcvbnm",$fonturl="C:\Windows\Fonts\TektonPro-BoldCond.otf"){
  $this->width=$width;
  $this->height=$height;
  $this->counts=$counts;
  $this->distrubcode=$distrubcode;
  $this->fonturl=$fonturl;
  $this->session=$this->sessioncode();
  session_start();
  $_SESSION['code']=$this->session;
  }
  function imageout(){
  $im=$this->createimagesource();
  $this->setbackgroundcolor($im);
  $this->set_code($im);
  $this->setdistrubecode($im);
  ImageGIF($im);
  ImageDestroy($im);
  }
  private function createimagesource(){
  return imagecreate($this->width,$this->height);
  }
  private function setbackgroundcolor($im){
  $bgcolor = ImageColorAllocate($im, rand(200,255),rand(200,255),rand(200,255));//±??°????
  imagefill($im,0,0,$bgcolor);
  }
  private function setdistrubecode($im){
  $count_h=$this->height;
  $cou=floor($count_h*2);
  for($i=0;$i<$cou;$i++){
  $x=rand(0,$this->width);
  $y=rand(0,$this->height);
  $jiaodu=rand(0,360);
  $fontsize=rand(8,15);
  $fonturl=$this->fonturl;
  $originalcode = $this->distrubcode;
  $countdistrub = strlen($originalcode);
  $dscode = $originalcode[rand(0,$countdistrub-1)];
  $color = ImageColorAllocate($im, rand(40,140),rand(40,140),rand(40,140));
  imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$dscode);
  }
  }
  private function set_code($im){
  $width=$this->width;
  $counts=$this->counts;
  $height=$this->height;
  $scode=$this->session;
  $y=floor($height/2)+floor($height/4);
  $fontsize=rand(30,35);
  $fonturl="C:\Windows\Fonts\AdobeGothicStd-Bold.otf";//$this->fonturl;
  $counts=$this->counts;
  for($i=0;$i<$counts;$i++){
  $char=$scode[$i];
  $x=floor($width/$counts)*$i+8;
  $jiaodu=rand(-20,30);
  $color = ImageColorAllocate($im,rand(0,50),rand(50,100),rand(100,140));
  imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$char);
  }
  }
  private function sessioncode(){
  $originalcode = $this->distrubcode;
  $countdistrub = strlen($originalcode);
  $_dscode = "";
  $counts=$this->counts;
  for($j=0;$j<$counts;$j++){
  $dscode = $originalcode[rand(0,$countdistrub-1)];
  $_dscode.=$dscode;
  }
  return $_dscode;
  }
  }
  Header("Content-type: image/GIF");
  $imagecode=new  Imagecode(160,50);
  $imagecode->imageout();

【仿照TP框架自带的PHP验证码类】相关文章:

php如何实现验证码06-13

PHP框架是什么09-23

怎么在yaf框架增加php扩展框架07-24

PHP面试之php自带的几个防止sql注入的函数06-14

PHP自带的几个实用的数组函数详解10-07

重新认识PHP框架08-27

用php生成带有雪花背景的验证码09-30

PHP MVC框架路由学习笔记07-02

如何实现php登陆表单提交CSRF及验证码09-14

PHP类与构造函数07-01