php里图片验证码的实现的大概思路是:生成随机验证码,把验证码写到session中,生成图片,把验证码写到图片上,输出图片。
下面是从网上找来的一段生成验证码图片的类verify.php:
<?php
session_start();
session_register("login_check_number");
//如果浏览器显示“图像XXX因其本身有错无法显示”,可尽量去掉文中空格
//先成生背景,再把生成的验证码放上去
$img_height=70;//先定义图片的长、宽
$img_width=25;
$authnum='';
//生产验证码字符
$ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$list=explode(",",$ychar);
for($i=0;$i<4;$i++){
$randnum=rand(0,35);
$authnum.=$list[$randnum];
}
//把验证码字符保存到session
$_SESSION["login_check_number"] = $authnum;
$aimg = imagecreate($img_height,$img_width); //生成图片
imagecolorallocate($aimg, 255,255,255); //图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了
$black = imagecolorallocate($aimg, 0,0,0); //定义需要的黑色
for ($i=1; $i<=100; $i++) {
imagestring($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"@",imagecolorallocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
}
//为了区别于背景,这里的颜色不超过200,上面的不小于200
for ($i=0;$i<strlen($authnum);$i++){
imagestring($aimg, mt_rand(3,5),$i*$img_height/4+mt_rand(2,7),mt_rand(1,$img_width/2-2), $authnum[$i],imagecolorallocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
}
imagerectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//画一个矩形
Header("Content-type: image/PNG");
ImagePNG($aimg); //生成png格式
ImageDestroy($aimg);
?>
生成的验证码存放在$_SESSION['login_check_number']中。
写一人简单的验证页面,如verify.html:
<form method='post' action='check.php'>
<input type='text' name='verify'>
<img style="cursor:pointer" title="刷新验证码" id="refresh" border='0' src='verify.php'
onclick="document.getElementById('refresh').src='verify.php?t='+Math.random()"/>
<button type='submit'>确定</button>
</form>
在处理验证的页面得到输入验证码的input框的值和$_SESSION['login_check_number']中的值相比较,如果相等则输入验证码正确。
check.php
<?php
header('Content-type:text/html;charset=utf-8');
session_start();
echo $_POST['verify'];
echo $_SESSION['login_check_number'];
if (strtoupper($_POST['verify']) != $_SESSION['login_check_number']) {
echo '验证失败';
}
else {
echo '验证成功';
}
?>

ps:在实际操作中可能会遇到在IE中为红叉,firefox不显示图片,直接访问verify.php会提示:
图像XXX因其本身有错无法显示
遇到这种情况很无奈,我的做法是尽量去掉文件中的空格,无数次重试,结果成功显示。
(本文验证码类出自:http://www.phpchina.com/html/92/24392-8593.html)
分享到:
相关推荐
PHP图片验证码是一种常用的安全机制,用于防止自动化程序(如机器人)对网站进行恶意操作,如批量注册、垃圾评论等。这种验证码通常由随机生成的一串字符组成,用户在提交表单时需要正确输入显示的字符,以此证明...
PHP图片验证码的实现
首先,让我们详细了解PHP图片验证码(CAPTCHA)的工作原理和实现。图片验证码通常由一串随机生成的字母或数字组成,这些字符扭曲、旋转、模糊,以增加机器识别的难度。在用户界面中,用户需要输入显示的验证码,只有...
总之,PHP图片验证码的实现涉及到图像处理、随机数生成、HTTP头部设置等多个技术点,是网站安全机制中不可或缺的一环。开发者应根据具体需求选择合适的库和方法,同时考虑用户体验和安全性之间的平衡。
【PHP图片验证码】是一种用于网站身份验证的安全机制,它通过生成一张包含随机字符的图片,让用户输入看到的字符来确认其身份。这篇文章将详细介绍PHP如何创建一个简单的图片验证码,包括涉及的主要函数和过程。 ...
总的来说,PHP图片验证码是通过结合随机字符串生成、图像处理技术和干扰元素实现的,有效地提高了网站的安全性。通过理解和实践这个实例,您可以创建自己的自定义验证码解决方案,适应各种项目需求。同时,记住定期...
PHP图片验证码的实现 PHP图片验证码是用于防止自动登录和恶意软件攻击的有效手段。验证码可以阻止通过恶意软件自动登录的行为,也能用于论坛防止大规模匿名回帖的发生,减轻爆破性攻击,避免网站数据库崩溃。 一、...
标题与描述中的“php图片验证码函数”涉及到的知识点主要包括PHP中的图像处理库使用、验证码的生成逻辑、会话管理(session)以及随机数生成等技术。下面将详细解析这些知识点: ### 1. PHP图像处理库 PHP提供了GD库...
### PHP编程最快明白第七讲:PHP图片验证码与缩略图技术详解 #### 一、PHP图片验证码技术 在本章节中,《PHP编程最快明白》详细介绍了如何使用PHP生成图片验证码,这是一种常用的安全措施,用于防止自动化工具进行...
本知识点主要围绕“PHP图片处理验证码类”展开,讲解如何在PHP中创建一个验证码类,并实现设置干扰像素、输出随机颜色点以及随机字符串的功能。 首先,`ValidationCode.php`可能是定义验证码类的文件,里面包含了...
验证码合集,验证码 PHP 语音 图片 多版本
标题中的“点击图片刷新验证码插件 for PHP168.rar”指的是一个专为PHP168框架设计的验证码刷新插件。PHP168是一个开源的内容管理系统,它为开发者提供了丰富的功能,包括网站构建和管理。这个插件的目的是解决在...
关于php的验证码制作ppt,可做教学用
使用时将button.php作为图片加入网页,如:<img src="button.php" /> 验证码判断时如验证码输入框名称为code时,则用 $code != $_SESSION['code']判断验证码是否正确
【PHP图片验证码实例详解】 验证码是一种常见的网络安全机制,用于防止自动化的机器人或恶意软件进行非法操作,例如批量注册、垃圾评论等。在PHP中创建图片验证码可以有效地增加网站的安全性。下面将详细介绍如何...
通过以上这些技术,我们可以构建一个功能齐全且相对安全的PHP图片验证码系统。这个系统对于初学者来说是一个很好的实践项目,可以加深对PHP图像处理和Web安全的理解。同时,对于实际网站应用,还应根据具体需求进行...