`
crazymud
  • 浏览: 58127 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

php图片验证码

    博客分类:
  • PHP
阅读更多

      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)

分享到:
评论
1 楼 moqiang02 2013-04-17  
http://www.phpchina.com/html/92/24392-8593.html
感谢楼主指教!

相关推荐

    PHP 图片验证码.rar

    PHP图片验证码是一种常用的安全机制,用于防止自动化程序(如机器人)对网站进行恶意操作,如批量注册、垃圾评论等。这种验证码通常由随机生成的一串字符组成,用户在提交表单时需要正确输入显示的字符,以此证明...

    PHP图片验证码的实现

    PHP图片验证码的实现

    PHP语音验证码和PHP图片验证码

    首先,让我们详细了解PHP图片验证码(CAPTCHA)的工作原理和实现。图片验证码通常由一串随机生成的字母或数字组成,这些字符扭曲、旋转、模糊,以增加机器识别的难度。在用户界面中,用户需要输入显示的验证码,只有...

    实用的PHP图片验证码

    总之,PHP图片验证码的实现涉及到图像处理、随机数生成、HTTP头部设置等多个技术点,是网站安全机制中不可或缺的一环。开发者应根据具体需求选择合适的库和方法,同时考虑用户体验和安全性之间的平衡。

    PHP图片验证码

    【PHP图片验证码】是一种用于网站身份验证的安全机制,它通过生成一张包含随机字符的图片,让用户输入看到的字符来确认其身份。这篇文章将详细介绍PHP如何创建一个简单的图片验证码,包括涉及的主要函数和过程。 ...

    php图片验证码实例以及代码打包下载【图片、点击自动刷新、包含字体、干扰元素】

    总的来说,PHP图片验证码是通过结合随机字符串生成、图像处理技术和干扰元素实现的,有效地提高了网站的安全性。通过理解和实践这个实例,您可以创建自己的自定义验证码解决方案,适应各种项目需求。同时,记住定期...

    PHP图片验证码的实现.pdf

    PHP图片验证码的实现 PHP图片验证码是用于防止自动登录和恶意软件攻击的有效手段。验证码可以阻止通过恶意软件自动登录的行为,也能用于论坛防止大规模匿名回帖的发生,减轻爆破性攻击,避免网站数据库崩溃。 一、...

    php图片验证码函数

    标题与描述中的“php图片验证码函数”涉及到的知识点主要包括PHP中的图像处理库使用、验证码的生成逻辑、会话管理(session)以及随机数生成等技术。下面将详细解析这些知识点: ### 1. PHP图像处理库 PHP提供了GD库...

    《PHP编程最快明白》第七讲:php图片验证码与缩略图_.docx

    ### PHP编程最快明白第七讲:PHP图片验证码与缩略图技术详解 #### 一、PHP图片验证码技术 在本章节中,《PHP编程最快明白》详细介绍了如何使用PHP生成图片验证码,这是一种常用的安全措施,用于防止自动化工具进行...

    php 图片处理 验证码类

    本知识点主要围绕“PHP图片处理验证码类”展开,讲解如何在PHP中创建一个验证码类,并实现设置干扰像素、输出随机颜色点以及随机字符串的功能。 首先,`ValidationCode.php`可能是定义验证码类的文件,里面包含了...

    验证码 PHP 语音图片多版本

    验证码合集,验证码 PHP 语音 图片 多版本

    点击图片刷新验证码插件 for PHP168.rar

    标题中的“点击图片刷新验证码插件 for PHP168.rar”指的是一个专为PHP168框架设计的验证码刷新插件。PHP168是一个开源的内容管理系统,它为开发者提供了丰富的功能,包括网站构建和管理。这个插件的目的是解决在...

    php图片验证码制作教程

    关于php的验证码制作ppt,可做教学用

    PHP图片验证码 产生随机数自动生成图片

    使用时将button.php作为图片加入网页,如:&lt;img src="button.php" /&gt; 验证码判断时如验证码输入框名称为code时,则用 $code != $_SESSION['code']判断验证码是否正确

    一漂亮的PHP图片验证码实例

    【PHP图片验证码实例详解】 验证码是一种常见的网络安全机制,用于防止自动化的机器人或恶意软件进行非法操作,例如批量注册、垃圾评论等。在PHP中创建图片验证码可以有效地增加网站的安全性。下面将详细介绍如何...

    php完成的图片数字验证码小系统

    通过以上这些技术,我们可以构建一个功能齐全且相对安全的PHP图片验证码系统。这个系统对于初学者来说是一个很好的实践项目,可以加深对PHP图像处理和Web安全的理解。同时,对于实际网站应用,还应根据具体需求进行...

Global site tag (gtag.js) - Google Analytics