php 汉字验证码
代码:
captcha.php
<?php
//实现简单的验证码 //session_start
session_start();
//画布
$image = imagecreatetruecolor(200, 60);
//设置填充颜色
$bgcolor = imagecolorallocate($image, 255, 255, 255);
//填充
imagefill($image, 0, 0, $bgcolor); //随机数据
$str = '的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严';
//因为在utf-8中,汉字是3个字符
$cndb = str_split($str,3);
//session
$captcha_code = '';
for ($i = 0; $i < 4; $i++) {
//字体颜色
$fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
//数组下标
$index = mt_rand(0,count($cndb));
//存储汉字
$font_cn = $cndb[$index];
//
$captcha_code .= $font_cn;
//字体
$font = './font/msyh.ttc';
//画到画布
imagettftext($image,mt_rand(16,20),mt_rand(-60,60),(40*$i+20),mt_rand(30,35),$fontcolor,$font,$font_cn);
}
//保存到session
$_SESSION['authcode'] = $captcha_code;
//干扰
//像素点
for ($i = 0; $i < 200; $i++) {
$pixcolor = imagecolorallocate($image, mt_rand(20, 200), mt_rand(20, 200), mt_rand(20, 200));
imagesetpixel($image, mt_rand(0, 199), mt_rand(0, 59), $pixcolor);
} //线
for ($i = 0; $i < 4; $i++) {
$linecolor = imagecolorallocate($image, mt_rand(50, 220), mt_rand(50, 220), mt_rand(50, 220));
imageline($image, mt_rand(0, 199), mt_rand(0, 59), mt_rand(0, 199), mt_rand(0, 59), $linecolor);
}
//输出
header('Content-type: image/png');
imagepng($image);
//销毁
imagedestroy($image);
form.php
<?php
if (isset($_REQUEST['authcode'])) {
session_start();
//判断
if (strtolower($_REQUEST['authcode'] == strtolower($_SESSION['authcode']))) {
echo '恭喜你输入正确!';
} else {
echo '输入失败!';
}
exit();
}
?>
<html>
<head>
<title>验证码提交</title>
</head>
<body>
<form action="form.php" method="post">
<p>验证码:<img src="captcha.php?r=<?php echo mt_rand() ?>" id="captcha_img" alt="验证码" width="200" height="200" border="1px"></p>
<a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">看不清?</a>
<p>
<label for="authcode">请输入图片中的内容: </label>
<input type="text" name="authcode" id="authcode"/>
</p> <p><input type="submit" value="submit"/></p>
</form>
</body>
</html>
php 汉字验证码的更多相关文章
- java验证码-汉字验证码
今天整理了一个java实现的汉字输入验证码 主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确 实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码 ...
- java实现点选汉字验证码(转)
package com.rd.p2p.web; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; im ...
- PHP算式验证码和汉字验证码的实现方法
在PHP网站开发中,验证码可以有效地保护我们的表单不被恶意提交,但是如果不使用算式验证码或者汉字验证码,仅仅使用简单的字母或者数字验证码,这样的验证码方案真的安全吗? 大家知道简单数字或者字母验证码很 ...
- java实现点选汉字验证码
package com.rd.p2p.web; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; im ...
- java实现点选汉字验证码(自己修改后的)
参考:http://blog.csdn.net/qq_26680031/article/details/51168527 package com.rd.p2p.web; import java.awt ...
- 字母数字、字母、汉字验证码 (java)
原文:http://blog.csdn.net/qh_java/article/details/49854477 一.字母数字,字母,汉字验证码的生成代码 1.字母数字验证码: package com ...
- 用C#生成随机中文汉字验证码的基本原理
前几天去申请免费QQ号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,Moper上的猫儿们都大骂腾讯采用中文验证码.^_^ 我不得不佩服腾讯为了防止目前网络上横行的QQ号码 ...
- java生成汉字验证码
java实现的汉字输入验证码,主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确,实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用文本框 ...
- .net core 滑动+点击汉字验证码
用 .net core 写的 滑动+点击汉字的验证码,代码比较简单就不做说明了. github地址 https://github.com/wangchengqun/NetCoreVerificat ...
随机推荐
- Android错误之--activity_main cannot be resolved or is not a field
一般在copy别人的项目中会easy出现本错误,截图例如以下:
- python访问纯真IP数据库的代码
通过IP地址判断客户端是网通的还是电信的. 使用一个纯文本的IP纯真数据库,用Python写了一个小程序. 核心代码: #!/usr/bin/env python #site www.jbxue.co ...
- clone和lambda的一个小问题和解决
起因是这样,某管理器类有两个集合,A集合是模板集合,B集合是从模板中实例出的集合. 但是B集合的一些东西,总会调用A集合中的,导致出错. 一开始考虑clone使用不当,但检查后没发现什么问题,后来发现 ...
- TypesMethodsAndFields
https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields Types dalvik's bytecode has two major ...
- redis命令_INCR
INCR key 将 key 中储存的数字值增一. 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作. 如果值包含错误的类型,或字符串类型的值不能表示为数字,那 ...
- myeclipse之完全破解
并不是所有的破解都是成功的,就如并不是所有的战争都会胜利一样,我们在做事情的时候,总会遇到些问题,比如Activate不成功,需要手动激活. 激活不成功就是不成功,来回的破解.卸载.重装,都还是不可能 ...
- oracle序列在insert into 语句中的使用
很多人创建了序列,但是在插入语句中不知道怎么使用,在此做个简单介绍. oracle序列有两个参数:nextval和currval,使用的时候,需要输入sequence_name.nextval或seq ...
- JS——简单的正则表达式验证
<!-- 用户注册:结构层:html;表现层:css;行为层:javascript; html利用ul,li来构造: 注意事项:1.每个Input都要有相应的id,这是在js中去调用的. 2.& ...
- 如何在openWRT系统上实现双版本
最近由于项目需要,需要在AR9331芯片单板(原来是4MBFlash,后来扩充到16MB Flash)上,实现openwrt双版本机制. 双版本的好处,主要是:在升级版本过程中,如果遇到断电等情况,不 ...
- Ubuntu SVN服务器的搭建与配置(转)
Ubuntu SVN服务器的搭建与配置 一. 安装 sudo apt-get install subversion sudo apt-get install libapache2-sv ...