以下分享一个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获取储存验证码的更多相关文章

  1. vue 项目,获取手机验证码和图形验证码(iviewUI框架)

    1.编辑获取验证码模块 <Form ref="phoneFormItem" :model="phoneFormItem" :label-width=&qu ...

  2. 获取登录验证码失败及前后端不同域导致session丢失问题分析记录

    前言 前两周在把兄弟公司的几个服务部署到我们公司测试环境服务器的时候又遇到了不少问题,因为是前后端分离的项目,所以这次也同样遇到了跨域问题,解决方式也跟上一回的不一样,这里就再来分析记录一下. 登录验 ...

  3. 关于手机短信验证码存session 获取不到的问题

    问题描述:最近做一个项目,手机端注册,服务端产生一个验证码,通过短信发送到手机,并存放到session中,但手机端发送第二次请求传回验证码,要对两个验证码进行比较判断时,session存放的验证码丢失 ...

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

    内容目录: 文件上传 验证码+session 文件和图片的上传功能 HTML Form表单提交,实例展示 views 代码 HTML ajax提交 原生ajax提交,XMLHttpRequest方式上 ...

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

    首先要有生成验证码图片和验证码文字的逻辑 package cn.bingou.util; import java.awt.Color; import java.awt.Font; import jav ...

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

    Tornado框架-生成验证码图片,以及验证码结合Session验证 第一.生成验证码图片  生成验证码图片需要两个必须模块 1.python自带的random(随机模块) 2.Pillow()图像处 ...

  7. 转:Java生成图片验证码(有点仿QQ验证码的意思)

    http://blog.csdn.net/ruixue0117/article/details/22829557 java: VerifyCodeUtils.java package com.fro. ...

  8. Django之验证码 + session 认证

    验证码 + session认证 目录结构 . └── project ├── app01 │   ├── admin.py │   ├── apps.py │   ├── __init__.py │  ...

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

    原生AJAX Ajax主要就是使用 [XmlHttpRequest]对象来完成请求的操作,该对象在主流浏览器中均存在(除早起的IE),Ajax首次出现IE5.5中存在(ActiveX控件). 1.Xm ...

随机推荐

  1. SweetAlert的入门

    在做后台管理系统,在用户交互这块(弹窗.提示相关),用了一款还不错的插件SweetAlert(一款原生js提示框,允许自定义,支持设置提示框标题.提示类型.确认取消按钮文本.点击后回调函数等等), 效 ...

  2. laravel中soapServer支持wsdl的例子

    最近在对接客户的CRM系统,获取令牌时,要用DES方式加密解密,由于之前没有搞错这种加密方式,经过请教了"百度"和"谷歌"两个老师后,结合了多篇文档内容后,终于 ...

  3. 【codeforces 821E】Okabe and El Psy Kongroo

    [题目链接]:http://codeforces.com/problemset/problem/821/E [题意] 一开始位于(0,0)的位置; 然后你每次可以往右上,右,右下3走一步; (x+1, ...

  4. Xwiki平台Windows搭建(Tomcat7 + XWiki6.2 + MySQL5.5)

    背景介绍 国内xwiki安装使用资料较少,根据自己使用xwiki经验,总结出来,供参考,同时希望感兴趣的朋友能够一起讨论,XWiki是一个强大的Java开源的Wiki引擎. 它支持一些受欢迎的特性如: ...

  5. View 和 ViewGroup 的 hasFocusable

    在 android 中.焦点的获取和事件几乎相同,有一个分发机制.一般来说View 树上上层节点的 ViewGroup 比底层节点的 View 有更高的优先级获取焦点.这体如今 ViewGroup 有 ...

  6. spring定时器中如何获取servletcontext

    spring定时器中如何获取servletcontext 学习了:https://zhidao.baidu.com/question/406212574.html @Scheduled(cron = ...

  7. vdceye 最新中文界面

    最新的vdceye 的界面.左边菜单增加了问题.并增加了虚拟摄像机部分 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmlkZW9fZGM=/font/5 ...

  8. Android-Universal-Image-Loader 学习笔记(五)线程池分析

    UniveralImageLoader中的线程池            一般情况网络访问就需要App创建一个线程来执行(不然可能出现很臭的ANR),但是这也导致了当网络访问比较多的情况下,线程的数目可 ...

  9. LSTM模型

    摘自:http://www.voidcn.com/article/p-ntafyhkn-zc.html (二)LSTM模型 1.长短期记忆模型(long-short term memory)是一种特殊 ...

  10. Ubuntu源配置

    一.图形界面配置 新手推荐使用图形界面配置: 系统工具 -> 软件和更新-> Ubuntu软件-> 下载自:-> 其他站点  点击 选择最佳服务器(将通过连接测试确定最佳镜像) ...