PHP生成验证码
<?php
check_code();
function check_code($width = 100, $height = 50, $num = 4, $type = 'jpeg')
{
$img = imagecreate($width, $height);
$string = ''; // 文字
for ($i = 0; $i < $num; $i++) {
$rand = mt_rand(0, 2);
switch ($rand) {
case 0:
$ascii = mt_rand(48, 57); //0-9
break;
case 1:
$ascii = mt_rand(65, 90); //A-Z
break;
case 2:
$ascii = mt_rand(97, 122); //a-z
break;
}
//chr()
$string .= sprintf('%c', $ascii);
}
//背景颜色
imagefilledrectangle($img, 0, 0, $width, $height, randBg($img));
//画干扰元素
for ($i = 0; $i < 50; $i++) {
imagesetpixel($img, mt_rand(0, $width), mt_rand(0, $height), randPix($img));
}
//写字
for ($i = 0; $i < $num; $i++) {
$x = floor($width / $num) * $i + 2;
$y = mt_rand(0, $height - 15);
imagechar($img, 5, $x, $y, $string[$i], randPix($img));
}
//imagejpeg
$func = 'image' . $type;
$header = 'Content-type:image/' . $type;
if (function_exists($func)) {
header($header);
$func($img);
} else {
echo '图片类型不支持';
}
imagedestroy($img);
return $string;
}
//浅色的背景
function randBg($img)
{
return imagecolorallocate($img, mt_rand(130, 255), mt_rand(130, 255), mt_rand(130, 255));
}
//深色的字或者点这些干扰元素
function randPix($img)
{
return imagecolorallocate($img, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
}
?>
PHP生成验证码的更多相关文章
- 动态生成验证码———MVC版
上面有篇博客也是写的验证码,但那个是适用于asp.net网站的. 今天想在MVC中实现验证码功能,弄了好久,最后还是看博友文章解决的,感谢那位博友. 首先引入生成验证码帮助类. ValidateCod ...
- laravel 生成验证码的方法
在Laravel中有很多图片验证码的库可以使用,本篇介绍其中之一:gregwar/captcha,这个库比较简单,在Laravel中比较常用.下面我们就来介绍下使用细节: 首先, composer.j ...
- java web学习总结(九) -------------------通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- android 生成验证码图片
(转自:http://blog.csdn.net/onlyonecoder/article/details/8231373) package com.nobeg.util; import java.u ...
- PHP 动态生成验证码
……机器人会在网站中搜寻允许他们插入广告的输入表单,在虚拟世界没有什么能阻挡它们胡作非为.这些机器人效率极高,完全不关心所攻击的表单的本来用途.它们唯一的目标就是用它们的垃圾广告覆盖你的内容,残忍地为 ...
- PHP生成验证码及单实例应用
/* note: * this 指向当前对象本身 * self 指向当前类 * parent 指向父类 */ /* 验证码工具类 * @author pandancode * @date 20150- ...
- ASP.NET ashx实现无刷新页面生成验证码
现在大部分网站登陆时都会要求输入验证码,在网上也看了一些范例,现在总结一下如何实现无刷新页面生成验证码. 效果图: 实现方式: 前台: <div> <span>Identify ...
- PHP-仿ecshop生成验证码
<?php /* 生成验证码 */ // 1.创建画布(基于已有图像) $n = mt_rand(1,5); $im = imagecreatefromjpeg('./images/captch ...
- Java生成验证码原理(jsp)
验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...
- C#生成验证码
生成验证码的类: using System; using System.Collections.Generic; using System.Drawing; using System.Text; na ...
随机推荐
- UWP 实现App多语言为所欲为切换
为所欲为,嗯 话不多说,先看效果吧(事先说明,我的方法不是最好的,但是我用着最有效.) [吐槽一下博客园上传的图片,我的App敲鸡漂亮滴,自带亚克力效果,怎么图片上传上来这么多的噪点啊.] [ 商店地 ...
- WampSever 安装问题解析
鉴于有些电脑安装wampsever出现的几种问题 [1] 2.2版本问题 这里端口配置正确,本地服务器没有开启(也就是80端口没有占用) 还是出现这种情况 也就是Apache service 和 PH ...
- Web离线应用解决方案——ServiceWorker
什么是ServiceWorker 在介绍ServiceWorker之前,我们先来谈谈PWA.PWA (Progressive Web Apps) 是一种 Web App 新模型,并不是具体指某一种前沿 ...
- linux mysql定时备份
项目需要定时备份数据库,以下是自己的操作笔记 1.检查磁盘空间 # df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 3.6 ...
- 关于myeclipse8.6的优化设置
1.设置一些类型文件的编码格式: >preferences>General>Content Types>Text>javaScript sourcefile 相同的操作 ...
- 为PHP摇旗呐喊!
如今市场上的电子商务软件基本上可归结为两大阵营.即PHP阵营和Java阵营.但对接触电子商务不久的用户来说.看到的往往仅仅是它们的表相,仅仅是明显的价格差异.却非常难看出它们之间的实际差异.事实上,P ...
- 被动式Telnet研究及实现(解决内外网远程维护的困难)-part A
欢迎转载.转载请保留原文链接:http://blog.csdn.net/mikulee/article/details/40149779 项目背景及需求: 近期公司有一个项目: 我们在一个arm主机上 ...
- 前端笔记----类型转换display
display属性用来在行内元素,块元素,行内块元素之间进行转化. 常用的属性有: 1.none :元素隐藏且不占位置,相当于不存在,一般用在动态展示效果:2.block :元素以块元素显示,有些行内 ...
- mybatis的#{}占位符和${}拼接符的区别
#{}占位符:占位 如果传入的是基本类型,那么#{}中的变量名称可以随意写 如果传入的参数是pojo类型,那么#{}中的变量名称必须是pojo中的属性.属性.属性- ${}拼接符:字符串原样拼接 如果 ...
- 58、js扩展
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理. 一.js的作用域 任何程序设计语言都有作用域的概念,简单的说,作用 ...