如何写一个漂亮的PHP验证码?兄弟连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 functioncreateimagesource(){

  returnimagecreate($this->width,$this->height);

  }

  private functionsetbackgroundcolor($im){

  $bgcolor = ImageColorAllocate($im,rand(200,255),rand(200,255),rand(200,255));//±³¾°ÑÕÉ«

  imagefill($im,0,0,$bgcolor);

  }

  private functionsetdistrubecode($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 functionset_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 functionsessioncode(){

  $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=newImagecode(160,50);

  $imagecode->imageout();

PHP入门培训教程 一个漂亮的PHP验证码的更多相关文章

  1. PHP入门培训教程 php中的时间处理

    php中的时间处理 PHP入门培训教程 兄弟连PHP培训 小编整理的 php中的时间处理: <? /** * 转换为UNIX时间戳 */ function gettime($d) { if(is ...

  2. 一个漂亮的php验证码类

    一个漂亮的php验证码类(分享)   作者: 字体:[增加 减小] 类型:转载 下面小编就为大家分享一个漂亮的php验证码类.需要的朋友可以过来参考下   直接上代码: 复制代码 代码如下: //验证 ...

  3. Linux入门培训教程 linux系统中文件I/O教程

    linux 文件I/O教程 一,文件描述符 对内核而言,所以打开的文件都通过文件描述符引用.每个进程都有一些与之关联的文件描述符.文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向 ...

  4. Linux入门培训教程 linux网络编程socket介绍

    一.概念介绍 网络程序分为服务端程序和客户端程序.服务端即提供服务的一方,客户端为请求服务的一方.但实际情况是有些程序的客户端.服务器端角色不是这么明显,即互为Linux培训 客户端和服务端. 我们编 ...

  5. Linux入门培训教程 常见linux命令释义

    快到中午吃饭了,然后忽然想起来samba里面没有添加用户.于是乎,就玩弄起了samba. Samba三下五除二就安装好了,想想window里面不断的点击下一步,还要小心提防各种隐藏再角落里的绑定软件. ...

  6. PHP入门培训教程PHP程序员要掌握哪些技术

    总有那么一群人,学个半吊子就急着找工作,面试题做不出来,吹牛都吹不来所以你只能低工资.PHP程序员要掌握哪些技术?那么兄弟连PHP培训 就来小结一下. 面试前请参考:(前三阶段完成80%在北京月薪5k ...

  7. PHP入门培训教程 PHP变量的使用

      很多朋友在编写PHP程序的时候有时候对变量总有着不能确定的问题,而且也有很多问题就是因为变量的处理不当所造成的.这里兄弟连PHP培训 小编,就PHP变量系统说一下. PHP的变量分为全局变量与局部 ...

  8. Linux入门培训教程 linux下拷贝cp删除rm移动mv命令参数以及说明

    拷贝移动删除在windows中看起来这么简单,但linux经常使用的文字界面,所以对于linux系统 下拷贝cp删除 rm 移动mv命令参数就不得不需要了解和学习了 cp 该命令的功能是将给出的文件或 ...

  9. PHP入门培训教程 PHP变量及常量

         一.PHP5.4的基本语法格式 1.PHP的分割符 $php=true; //分号结束语句 if($php){ echo "真"; //分号结束语句 } //大括号结束语 ...

随机推荐

  1. Our growth depends not on how many experiences we devour, but on how manywe digest.

    rot. v/n. 腐烂 vibration.n. 震动 charcoal. n 木炭 wrinkle. v. 长皱纹 geometry. n. 几何学 walnut.n. 核桃 tailor. n. ...

  2. Sql注入校验

    /// <summary> /// Sql注入校验 /// </summary> /// <param name="listWord">字符&l ...

  3. Hibernate-Criteria学习笔记

    hibernate_jpa注解 目前最新版的hibernate,5.2,底层整合了jpa,用idea的hibernate工具生成实体时,实体包含了注解的配置文件,缺一不可 如,用户类实体,生成之后是这 ...

  4. if练习

    练习: 1.简述变量命名规范 1.变量名由字母.下划线.数字组成 2.变量名不能以数字开头 3.变量不能使用python中的关键字 4.变量不能使用中文和拼音 5.区分大小写 6.变量名要具有描述性 ...

  5. 基于RSA的前后端登陆密码加密JAVA实现(转)

    RSA加密算法简介 SA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难,RSA算法愈 ...

  6. Springboot+Jedis+Ehcache整合

    项目结构概览: 1. 导包 <parent> <groupId>org.springframework.boot</groupId> <artifactId& ...

  7. Vue组件化和路由

    组件化 组件化是vue的核心思想,它能提高开发效率,方便重复使用,简化调试步骤,提升整个项目的可维护性,便于多人协同开发 组件通信 父组件 => 子组件: 属性props 特性$attrs 引用 ...

  8. MySql二进制版安装教程

    1.检查是否已安装过mariadb,若有便删除(linux系统自带的) [root@localhost /]# rpm -qa | grep mariadb [root@localhost /]# r ...

  9. linux NFS 自动挂载

    NFS 自动挂载的两种方法 第一种: 需要注意的事项 开机挂载的命令不能写入到/etc/fstab 中,由于 NFS 依赖于网络,而/etc/fstab 的引用是在计算机 网络尚未启动的时候就开始引导 ...

  10. mirror - 映射在远端节点上的档案

    总览 SYNOPSIS mirror [flags] -gsite:pathname mirror [flags] [package-files] 描述 DESCRIPTION Mirror 是以 P ...