代码:

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>

最新文章

  1. Linux RAID卡优化
  2. Shell 编程基础之基本语法结构汇总
  3. GridView的常规用法
  4. php猴子称王或者约瑟夫难题
  5. 批量插入使用SqlBulkCopy
  6. jsp页面 date转化成string
  7. scala言语基础学习十
  8. Linux中内存查看命令free详解(转)
  9. Asp.net 使用正则和网络编程抓取网页数据(有用)
  10. wifi驱动总结(1)
  11. 自动化的基于TypeScript的HTML5游戏开发
  12. JavaScript适配器模式
  13. 4依赖倒转原则DIP
  14. 项目(三)PXE高效能批量网络装机
  15. JAVA工程师面试常见问题集锦
  16. Struts2的基础知识
  17. dojo DataGrid实现表格数据编辑的解决方案
  18. Python 字符串(center)
  19. Owin中间件动手做
  20. centos7安装elasticsearch5.2.2

热门文章

  1. js的常见函数
  2. python3操作mysql教程
  3. linux下/etc/hosts 和hostname文件的区别
  4. Unity编辑器下获取动画的根运动状态并修改
  5. Atitit。Js调用后台语言 java c# &#160;php swing android &#160;swt的方法大总结
  6. [svc][jk]gpu温度监测
  7. 汉诺塔(-) java modPow 的用法;
  8. linux之mail
  9. Linux编程学习路线
  10. 写一个php小脚本辅助渗透测试