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发送短信 传送门 用户注册 用户并非一定要输入正确的手机验证码去激活当 ...
随机推荐
- CodeForces 166E -Tetrahedron解题报告
这是本人写的第一次博客,学了半年的基础C语言,初学算法,若有错误还请指正. 题目链接:http://codeforces.com/contest/166/problem/E E. Tetrahedro ...
- 【Win 10应用开发】如何知道当前APP在哪个平台设备上运行
在做Win10开发的时候,我们可能经常会需要获得当前程序在在哪个平台设备上运行,用于UI和相关API的调用,那么可以通过什么方式知道当前APP运行的平台呢? 今天这里提供两个方法给大家做参考: 方法一 ...
- IT男的”幸福”生活"续5
各位哥们姐妹们,好,嗯,好.很多回复还是提到[IT男的”幸福”生活"]是小说来着剧情不真实,我还是免为其难的说一下吧.是真的回忆录,具体的事情都有.人也是真实的.在这里还是谢谢,这几天一直关 ...
- this,this,再次讨论javascript中的this,超全面
至于js中this这个东西,好多淫解释过了,看起来好高端的样子,不造你看懂了木有? 先引用比较高端的,“汤姆大叔“ 的,yes this 好了,下面加上鄙人比较挫的解释 论点: this 不是变量,不 ...
- Java学习笔记(二十)——Java 散列表_算法内容
[前面的话] 周末,本来打算找人去玩,结果没找到,所以我只好有学习了. 为什么会学习散列表,因为要使用HashMap?因为在做项目的时候,在服务器和客户端需要传输DTO,而传输的属性是动态增加的,所以 ...
- [BZOJ2038]小Z的袜子(莫队算法)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 分析:莫队算法 莫队算法是一种思想…… 处理问题:不带修改的区间询问 使用要求:[l-1 ...
- Bootstrap3.0学习第十七轮(JavaScript插件——模态框)
详情请查看http://aehyok.com/Blog/Detail/24.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...
- struts2升级报ActionContextCleanUp<<is deprecated。Please use the new filters
把web.xml中配置struts.xml的文件改成 <?xml version="1.0" encoding="UTF-8"?> <web- ...
- OC基础--self关键字&super关键字
PS:OC中的self关键字可以与C#中的this关键字区分记忆,虽然区别还是很大的. OC中的super关键字指的是父类指针 一.self关键字必须了解的知识: 1.使用场合:只能用在方法中(对象方 ...
- 【BZOJ 3143】【Hnoi2013】游走 期望+高斯消元
如果纯模拟,就会死循环,而随着循环每个点的期望会逼近一个值,高斯消元就通过列方正组求出这个值. #include<cstdio> #include<cctype> #inclu ...