php编程每天必学之验证码


Posted in PHP onMarch 03, 2016

本文为大家分享了php图片验证码的实现代码,分享给大家供大家参考,具体内容如下

1.验证码图片生成
captcha.php

//1.生成100*30大小的图片,默认为黑色
$image = imagecreatetruecolor(100,30);
//创建白色底图
$bgcolor = imagecolorallocate($image,255,255,255);
//用白色填充黑色
imagefill ($image,0,0,$bgcolor);

//2.随机显示数字或字母
$captch_code = "";
for($i=0;$i<4;$i++){
 $fontsize=6;
 $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
 $data = "abcdefghijkmnpqrstuvwxy3456789";
 $fontcontent =substr($data,rand(0,strlen($data)),1);
 $captch_code .=$fontcontent;
 $x = ($i*100/4)+rand(5,10);
 $y = rand(5,10);

 imagestring($image, $fontsize, $x, $y, $fontcontent,$fontcolor);
}
$_SESSION["authcode"] = $captch_code;

//3.增加干扰
//干扰点
for($i=0;$i<100;$i++){
 $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
 imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
}

//干扰线
for($i=0;$i<2;$i++){
 $linecolor=imagecolorallocate($image,rand(80,220),rand(80,220),rand(80,220));
 imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
}


header("content-type:image/png");
imagepng($image);

2.页面实现验证码功能
form.php

<?php
if(isset($_POST["authcode"])){
 session_start();
 if(strtolower($_POST["authcode"])==$_SESSION["authcode"]){
  echo "OK";
 }else{
  echo "NO";
 }
}

?>


<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<form action="form.php" method="post">
 <p>验证码图片: <img id="img" border="1" src="captcha.php?r=<?php echo rand()?>" alt="">
 <a href="javascript:void(0)" onclick="document.getElementById('img').src='captcha.php?r'+Math.random() ">换一个</a>
 </p>
 <p><input type="text" name="authcode"></p>
 <p><input type="submit" value="提交"></p>

</form>
</body>
</html>

以上就是本文的全部内容,帮助大家轻松实现php图片验证码。

PHP 相关文章推荐
文章推荐系统(三)
Oct 09 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
PHP的PDO预处理语句与存储过程
Jan 27 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 PHP
PHP队列场景以及实现代码实例详解
Feb 26 PHP
php 原生分页
Apr 01 PHP
简单介绍PHP非阻塞模式
Mar 03 #PHP
浅析php设计模式之数据对象映射模式
Mar 03 #PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 #PHP
PHP MVC框架路由学习笔记
Mar 02 #PHP
深入浅析用PHP实现MVC
Mar 02 #PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 #PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 #PHP
You might like
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP中文编码小技巧
2014/12/25 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Python 字典与字符串的互转实例
2017/01/13 Python
聊聊Python中的pypy
2018/01/12 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
浅谈react路由传参的几种方式
2021/03/23 Javascript
门卫岗位安全职责
2013/12/13 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
法定代表人资格证明书
2014/09/11 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2014年节能工作总结
2014/12/18 职场文书
运动会开幕式主持词
2015/07/01 职场文书
离职告别感言
2015/08/04 职场文书
学习雷锋主题班会
2015/08/14 职场文书
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android