PHP雪花背景验证码


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
<?php /** * 验证码类 * @author staven * */ class ValidateCode{ private $width ; //验证码图片的宽度 private $height ; //验证码图片的高度 private $checkCode ; //验证码字符 private $codeNum ; //验证码字符个数 private $font ; //字体 private $fontSize ; //字体大小 private $fontColor ; //字体颜色 private $image ; //验证码句柄 private $charset ; //验证字符随机因子 //构造器方法初始化 function __construct( $width =100, $height =20, $codeNum =4, $fontSize = 12){ $this ->width = $width ; $this ->height = $height ; $this ->codeNum = $codeNum ; $this ->fontSize = $fontSize ; $this ->font = dirname( __FILE__ ) . '/font/elephant.ttf' ; $this ->charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789' ; //提供随机因子 $this ->checkCode = $this ->createCheckCode(); } /* 用于输出验证码图片,并且将验证码信息写入session */ function __toString(){ /* 加到session中, 存储下标为code */ $_SESSION [ "code" ] = strtoupper ( $this ->checkCode); $this ->outImage(); return '' ; } /* 生成随机验证码字符 */ private function createCheckCode(){ for ( $i =0; $i < $this ->codeNum; $i ++){ $this ->checkCode .= $this ->charset{mt_rand(0, strlen ( $this ->charset)-1)}; } return $this ->checkCode; } /* 输出验证码 */ private function outImage(){ $this ->getCreateImage(); $this ->createLine(); $this ->outputText(); $this ->outputImage(); } /* 生成验证码背景图片 */ private function getCreateImage(){ $this ->image = imagecreatetruecolor( $this ->width, $this ->height); $color = imagecolorallocate( $this ->image, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255)); imagefilledrectangle( $this ->image,0, $this ->height, $this ->width,0, $color ); } /* 向句柄图片中写入文字信息 */ private function outputText(){ $_x = $this ->width / $this ->codeNum; for ( $i =0; $i < $this ->codeNum; $i ++) { $this ->fontcolor = imagecolorallocate( $this ->image,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); imagettftext( $this ->image, $this ->fontSize,mt_rand(-30,30), $_x * $i +mt_rand(1,5), $this ->height / 1.4, $this ->fontColor, $this ->font, $this ->checkCode[ $i ]); } } /* 创建雪花图案 */ private function createLine() { for ( $i =0; $i <6; $i ++) { $color = imagecolorallocate( $this ->image,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); imageline( $this ->image,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 ->image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); imagestring( $this ->image,mt_rand(1,5),mt_rand(0, $this ->width),mt_rand(0, $this ->height), '*' , $color ); } } /* 生成验证码图片 */ private function outputImage(){ header( 'Content-type:image/png' ); imagepng( $this ->image); } /* 销毁句柄,释放资源 */ function __destruct() { imagedestroy( $this ->image); } } |
imageCode.php
1
2
3
4
|
<?php session_start(); //开启SESSION require_once 'ValidateCode.class.php' ; echo new ValidateCode(); |
image.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<!DOCTYPE html> <html> <head> <meta charset= "gbk" > <title>验证码</title> </head> <body> <img src= "imagecode.php" alt= "看不清楚,换一张" style= "cursor: pointer;" onclick= "this.src='imagecode.php?'+new Date().getTime();" /> <form method= "POST" action= "image.php" > <input type= "text" size= "4" name= "code" /> <input type= "submit" name= "submit" value= "提交" > </form> </body> </html> <?php /** 用于 */ session_start(); //开启SESSION if (isset( $_POST [ 'submit' ])){ //判断用户提交后执行 /* 判断用户在表单中输入的字符串和验证码图片中的字符串是否相同 */ if ( strtoupper (trim( $_POST [ "code" ])) == $_SESSION [ 'code' ]){ //如果验证码输出成功 echo '验证码输入成功<br>' ; //输出成功的提示信息 } else { //如果验证码输入失败 echo '<font color="red">验证码输入错误!!</font><br>' ; //输出失败的输入信息 } } ?> |
PHP雪花背景验证码的更多相关文章
- 制作炫酷雪花背景的jQuery插件
插件使用十分简单,代码已经放至我的GitHub,大家可以下载以及使用或者更新改进代码. HTML代码源码: <!DOCTYPE html> <html> <head> ...
- 如何解决php 生成验证码图片不显示问题
最近遇到一个问题,就是验证码在别人的电脑上可以显示,但是我自己的电脑上去不能.原因找了好久,哈哈,终于找到了!现在给大家分享一下: 程序: <?php $w = 80; //设置图片宽和高 $h ...
- php 图形验证码的3种方法
生成图形验证码需要使用php GD库来生成,如果你没开户GD库我们需要在php.ini文件找到extension=php_gd2.dll 去掉前面的;就行了,然后重启apache 或iis环境即可 检 ...
- 一个好看的php验证码源码
<?php $w = 80; //设置图片宽和高 $h = 26; $str = Array(); //用来存储随机码 $string = "ABCDEFGHIJKLMNOPQ ...
- PHP 图形验证码
一段生成图形验证码的代码,向原创作者致谢. 1.将以下代码保存为 txm.php ,注:直接运行该页面是没有结果的,要用另一页面引用,请看步骤2 <?php session_start(); $ ...
- 在ASP.NET中使用一般处理程序生成验证码
如果期望一般处理程序(ashx)处理Session,必须实现[System.Web.SessionState]命名空间下的[IRequiresSessionState]接口. asp.net中的验证码 ...
- python 基于机器学习识别验证码
1.背景 验证码自动识别在模拟登陆上使用的较为广泛,一直有耳闻好多人在使用机器学习来识别验证码,最近因为刚好接触这方面的知识,所以特定研究了一番.发现网上已有很多基于machine learni ...
- 图像里的"白噪声"——电视机搜不到台时雪花斑点的形成原因
作者:❄️固态二氧化碳❄️ (主页) 链接:图像里的"白噪声"--电视机搜不到台时雪花斑点的形成原因 - 固态二氧化碳的博客 - CSDN博客 来源:CSDN博客 发表时间:201 ...
- JavaWeb-SpringBoot_使用MySQL管理用户登录注册+接入腾讯短信SDK_demo
使用Gradle编译项目 传送门 项目已托管到Github上 传送门 JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信 传送门 用户注册 用户并非一定要输入正确的手机验证码去激活当 ...
随机推荐
- windows7 64位安装mysql 5.7.11 zip压缩版
现在,MySQL官网只提供zip的包了, 第一点:解压到自己的任意文件夹 注意:虽然我没有试,但尽量路径中不要有中文吧 第二点:添加环境变量 D:\web\mysql-5.7.11-winx64\bi ...
- LeetCode 笔记26 Single Number II
Given an array of integers, every element appears three times except for one. Find that single one. ...
- iOS——百度统计
百度移动统计(http://mtj.baidu.com)是一款专业的移动应用统计分析工具,支持ios和android平台.开发者可以方便地通过嵌入统计SDK,对移动应用进行全方位监测,实时监控产品表现 ...
- 【WEB API项目实战干货系列】- API登录与身份验证(三)
上一篇: [WEB API项目实战干货系列]- 接口文档与在线测试(二) 这篇我们主要来介绍我们如何在API项目中完成API的登录及身份认证. 所以这篇会分为两部分, 登录API, API身份验证. ...
- 集DDD,TDD,SOLID,MVVM,DI,EF,Angularjs等于一身的.NET(C#)开源可扩展电商系统–Virto Commerce
今天一大早来看到园友分享的福利<分享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi>,我也来分享一个吧.以下内容由笔者写 ...
- this,this,再次讨论javascript中的this,超全面
至于js中this这个东西,好多淫解释过了,看起来好高端的样子,不造你看懂了木有? 先引用比较高端的,“汤姆大叔“ 的,yes this 好了,下面加上鄙人比较挫的解释 论点: this 不是变量,不 ...
- 推荐一个 angular 图像加载插件
推荐一个简单的 Angular 图片加载插件:vgSrc,插件根据图片资源的不同加载状态,显示不同图片,亲测兼容IE-8. 使用 推荐使用 bower 加载: bash bower install v ...
- 从零开始写redis客户端(deerlet-redis-client)之路——第一个纠结很久的问题,restore引发的血案
引言 正如之前的一篇博文,LZ最近正在从零开始写一个redis的客户端,主要目的是为了更加深入的了解redis,当然了,LZ也希望deerlet客户端有一天能有一席之地.在写的过程当中,LZ遇到了一个 ...
- Git.Framework 框架随手记--IIS7运行序列化问题
客户反馈系统又登录不了,这是最近几次连续出现相同的问题,从日志反应情况来看: 日志级别:[info] 日志位置:Git.Framework.Resource.ResourceManager 日志时间: ...
- WCF入门(7)
前言 前段时间忙着驾照科目二的考试,都没有机会碰自己的电脑.说起来也是第一次参加这么没信心的考试,不过好在过了. 再打个广告吧,昨天终于把下载的WCF视频全部传到了QQ群共享里面,群号37819043 ...