PHP GD 生成图片验证码+session获取储存验证码

下面分享一个PHP制作的图片验证码案例:案例如下图:

运用PHP GD详细请看:http://www.php.net/manual/zh/book.image.php

后台图片代码如下:

<?php
session_start();

$image = imagecreatetruecolor(100,30);//创建一个宽100,高度30的图片
$bgcolor=imagecolorallocate($image,255,255,255);//图片背景是白色
imagefill($image,0,0,$bgcolor);//图片填充白色
//随机数
/**
for($i=0;$i<4;$i++){
  $fontsize=6;
  $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
  $fontcontent=rand(0,9);
  $x=($i*100/4)+ rand(5,10);
  $y=rand(5,10);
  imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
**/
//随机数据
$captch_code='';
for($i=0;$i<4;$i++){
  $fontsize=6;
  $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
  $data='asdfdfglfg74erf21854hgfhgfhkg4ljkghjtrtywiqpoqpwepdfgvnjytyut12313345645667686797800';
  $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;

//随机点
for($i=0;$i<200;$i++){
  $pointcolor=imagecolorallocate($image,rand(50,120),rand(50,120),rand(50,120));
  imagesetpixel($image,rand(1,99),rand(1,99),$pointcolor);
}
//随机线
for($i=0;$i<3;$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);

imagedestory($image);

?>

前台代码如下:

<?php
   if(isset($_REQUEST['autocode'])){
      session_start();
	  if(strtolower($_POST['autocode']) == $_SESSION['authcode']){
	   echo '正确';
	  }else{
	  echo'错误';
	  }

   exit();
   }

?>
<!DOCTYPE html>
<html>
  <head>
   <meta chartset="utf-8">
  </head>
  <body>
     <form method="post"  action="form.php">
	   <p>验证码图片:<img border="1" src="captcha.php?r="<?php echo rand();?> width="100" height="30"  /></p>

	   <p>输入内容:<input type="text" name="autocode" value="" /></p>

    <p><input type="submit"  value="提交" style="padding:6px 20px;"/></p>

     </form>
  </body>

</html>

添加点击执行修改如下即可:

  <p>验证码图片:<img border="1" id="capthcha_img" onclick="this.src='captcha.php?r='+Math.random()" src="captcha.php?r="<?php echo rand();?> width="100" height="30"  /> <a href="javascript:void(0)" onclick="document.getElementById('capthcha_img').src='captcha.php?r='+Math.random()">换一个</a></p>

本案例原创,转载请注明!

PHP GD 生成图片验证码+session获取储存验证码,布布扣,bubuko.com

时间: 2024-12-24 12:21:59

PHP GD 生成图片验证码+session获取储存验证码的相关文章

第二百七十节,Tornado框架-生成验证码图片,以及验证码结合Session验证

Tornado框架-生成验证码图片,以及验证码结合Session验证 第一.生成验证码图片  生成验证码图片需要两个必须模块 1.python自带的random(随机模块) 2.Pillow()图像处理模块里的PIL(图像库),为第三方模块,需要安装 封装验证码图片生成插件py 在封装文件里先导入random(随机模块),和Pillow()图像处理模块里的所需py文件 封装验证码图片生成插件功能,调用后返回验证码图片,和字符串类型验证码,两个返回值 注意:验证码需要一个字体文件,这个字体文件必须

6.后台验证码-session作用域

首先要有生成验证码图片和验证码文字的逻辑 package cn.bingou.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; imp

python第一百一十八天---ajax--图片验证码 + Session

原生AJAX Ajax主要就是使用 [XmlHttpRequest]对象来完成请求的操作,该对象在主流浏览器中均存在(除早起的IE),Ajax首次出现IE5.5中存在(ActiveX控件). 1.XmlHttpRequest对象介绍 XmlHttpRequest对象的主要方法: 1 XmlHttpRequest对象的主要方法: 2 a. void open(String method,String url,Boolen async) 3 用于创建请求 4 5 参数: 6 method: 请求方式

验证码的获取与验证

一.验证码的获取(将相关内容存在session中): public class SendValidMsg extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 如果不存在 session 会话,则创建一个 session 对象 HttpSession session = req.g

iOS使用技能 - 短信,语言验证码的获取与验证小结

最近有学习一个小技能,这里小结一下,分享给大家,互相交流. 首先是大体步骤: 在mob官网注册,然后添加短信验证的应用 使用cocoapods导入框架 Podfile文件: platform :ios, "6.0" target '短信验证'do # Mob产品公共库pod 'MOBFoundation_IDFA'# SMSSDK必须 pod 'SMSSDK' end 3.在AppDelegate注册应用AppKey 4.获取验证码 5.提交验证码 6.注意点:适配要记得开启https

python运维开发(二十一)----文件上传和验证码+session

内容目录: 文件上传 HTML Form表单提交 ajax提交 原生ajax提交 jQuery Ajax提交 验证码+session 文件和图片的上传功能

通过WebBrowser获取网页验证码

/// <summary> /// 返回指定WebBrowser中图片<IMG></IMG>中的图内容 /// </summary> /// <param name="WebCtl">WebBrowser控件</param> /// <param name="ImgeTag">IMG元素</param> /// <returns>IMG对象</retur

图片验证码+session

生成随机验证码 #!/usr/bin/env python # -*- coding:utf-8 -*- import random from PIL import Image, ImageDraw, ImageFont, ImageFilter _letter_cases = "abcdefghjkmnpqrstuvwxy" # 小写字母,去除可能干扰的i,l,o,z _upper_cases = _letter_cases.upper() # 大写字母 _numbers = ''.

C# 获取动态验证码?

如何获取动态验证码(比如登录验证码,每次访问码值都是不一样的).本来想从cookie上入手但是,每次访问虽然码值不一样,但是后来发现它们的cookie一样的.这个道路就行不通了.目前知道一个解决方案,就是通过WebBrowser获取然后显示的html,1.种方法直接截图:2.将图片元素的DomElement作为参数,方法如下.但是这种方法效率太低..,求高效的方法.结合mshtml.dll. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [ComI