一个漂亮的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();
一个漂亮的PHP验证码的更多相关文章
- 一个漂亮的php验证码类
一个漂亮的php验证码类(分享) 作者: 字体:[增加 减小] 类型:转载 下面小编就为大家分享一个漂亮的php验证码类.需要的朋友可以过来参考下 直接上代码: 复制代码 代码如下: //验证 ...
- PHP入门培训教程 一个漂亮的PHP验证码
如何写一个漂亮的PHP验证码?兄弟连PHP培训 小编分享一段代码给大家: <?php class Imagecode{ private $width ; private $height; pri ...
- 一个漂亮的php验证码类(分享)
直接上代码: 复制代码 代码如下: //验证码类class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRS ...
- 建立一个漂亮的PHP验证码类文件及调用方式
//验证码类class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';/ ...
- 一个漂亮的js表单验证页面+验证码
一个漂亮的js表单验证页面 见图知其意, 主要特性 带密码安全系数的判断 其他的就没有啥啦 嘿嘿嘿 当然,其代码也在Github上 我也准备了一套可以直接Ctrl + v; Ctrl + c 运行的代 ...
- 很漂亮的PHP验证码(记录)
在提交表单的时候为了防止机器操作或者是恶意的攻击,在填写表单的时候一般都用验证码来过滤掉一些非法提交数据.今天给大家介绍一款超实用超漂亮的PHP验证码库:Captcha. 安装 使用composer: ...
- ctex moderncv版本更新--用latex写一个漂亮的简历
我的电脑是win7系统32位,ctex版本是v2.9.2.164 full(http://www.ctex.org/CTeXDownload) 一直不太清楚moderncv里面类似\cventry这种 ...
- PS网页设计教程XXIV——从头设计一个漂亮的网站
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
- 分享一个漂亮的ProgressBar控件
codeprject上看到的一个漂亮的ProgressBar控件.是用vb.net开发的. C#直接在工具箱中引用即可. 地址:http://www.codeproject.com/Articles/ ...
随机推荐
- agc007C - Pushing Balls(期望 等差数列)
题意 题目链接 翻译来自神仙yyb Sol 又是一道神仙题.. 我开始的思路是枚举空位,但是还是不能做,GG 标算过于神仙,其中一些细节我也理解不了 题目给出的实际是一个首项为$d$,公差为$x$的等 ...
- BZOJ4355: Play with sequence(吉司机线段树)
题意 题目链接 Sol 传说中的吉司机线段树??感觉和BZOJ冒险那题差不多,就是强行剪枝... 这题最坑的地方在于对于操作1,$C >= 0$, 操作2中需要对0取max,$a[i] > ...
- java基础概念整理综合 及补充(jdk1.8)
2018 java基础 笔记回顾摘要 一 1,html 与 注释: <!-- --> 注释不能嵌套 代码都得有注释. 2,空格符: 3,css选择的优先级: id选择器 > ...
- uvm_hdl——DPI在UVM中的实现(四)
我们可以在uvm中实现HDL的后门访问,具体包括的function有uvm_hdl_check_path,uvm_hdl_deposit, uvm_hdl_force,uvm_hdl_release, ...
- EF ObjectQuery查询及方法
string esql = "select value c from NorthwindEntities.Customers as c order by c.CustomerID lim ...
- JavaScript:理解Promise方法
什么是promise? Promise的核心思想是代表异步操作的一个结果,并且promise具有三个状态(pending初始状态,fulfilled成功状态,rejected失败状态).我们可以理解为 ...
- python剑指offer系列二叉树中和为某一值的路径
题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...
- Python读取图片,并保存为矩阵
from scipy.misc import imread,imshow img = imread('D:test.bmp') print img[:,:,2].shape imshow() 注意im ...
- java中的两同两小一大原则
子类覆盖父类要遵循“两同两小一大” “两同”即方法名相同,形参列表相同 “两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等 ...
- Luogu [P1334] 瑞瑞的木板(手写堆)
其实这个题完全不需要用手写堆,只需要一遍遍sort就行了…… 但是! 为了练习手写堆,还是用手写堆做了. 在做本题之前,如果你没有什么思路的话,建议先做Luogu的合并果子. 好,假设你已经做过了合并 ...