图文验证码的实现原理:

1):准备些许图片将其存储在数据库,每一张图片对应一个标识字段。

2):在服务器端使用数组的形式将图片与标识字段组合起来。

3):随机给客户端返回图片,并接受用户输入的字段。

4):将用户输入的字段与服务器存储的与每张图片的信息进行比对。

5):相同则通过,否则不通过。

a)第一步生成验证码

createCode.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    header("content-type:text/html;charset=utf-8");   
    session_start();//开启服务器 存储
    $table=array(
      'pic0'=>"猫"
      'pic1'=>'狗',
      'pic2'=>'猴',
      'pic3'=>'鱼'
    );
      $index=rand(0,3);//生成随机数
      $value=$table['pic'.$index];//取出随机值
      $_SESSION['authcode']=$value;//将值存储在服务器端
 
      $filename=dirname(__FILE__).'\\pic'.$index.'.jpg';//给出文件的地址
        
      $content=file_get_contents($filename);//读取文件的内容
       
      ob_clean();//清除缓存
       
      header("content-type:image/jpg");//规定以jpg的形式输出图片
       
      echo $contents;//输出图片文件
?>

b)使用验证码  

useCode.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    header("content-type:text/html;charset=utf-8");
    if(isset($_REQUEST["authcode"])){
         session_start();    
         if($_SESSION['authcode']==$_REQUEST['authcode']){//$_REQUEST['authcode']..获取输入框的值
             echo "<font>验证通过</font>";
          }
         else{
             echo "<font>验证失败</font>";
         }
         exit();
    }
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>验证码正确</title>
</head>
</html>
<body>
    <form action="useCode.php">
       <p>验证码图片:
           <img src="createCode.php?=<?php echo rand();?>
            onclick="this.src='createCode.php?+<?php rand(0,200)?>'"
            alt=""
           ">
       </p>
       <p>输入验证码的内容:
           <input type="text" name="authcode" value="">
       </p>
       <p>
           <input type="submit" value="提交">
       </p>
    </form>   
</body>   

 事实截图:

 

使用php在服务器端生成图文验证码的更多相关文章

  1. 使用php在服务器端生成图文验证码(二)

    图文验证码的实现原理: 1):准备些许图片将其存储在数据库,每一张图片对应一个标识字段. 2):在服务器端使用数组的形式将图片与标识字段组合起来. 3):随机给客户端返回图片,并接受用户输入的字段. ...

  2. Vcode的生成工具类,生成制定长度验证码,图文验证码工具类

    public class VCodeUtils { // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static f ...

  3. 【Java】生成图形验证码

    本章介绍一个能生成比较好看的图形验证码类 生成验证码工具类 package com.util; import java.awt.Color; import java.awt.Font; import ...

  4. php生成动态验证码 加减算法验证码 简单验证码

    预览效果: <?php /** *ImageCode 生成包含验证码的GIF图片的函数 *@param $string 字符串 *@param $width 宽度 *@param $height ...

  5. Java生成随机验证码

    package com.tg.snail.core.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  6. PHP利用jquery生成各种验证码和Ajax验证

    PHP生成验证码图片 PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中.PHP 生成验证码的大致流程有: .产生一张png的图片: .为图片设置背景 ...

  7. php生成动态验证码

    <?php/*调用示例*/session_start();$checkCode='';$chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ ...

  8. C#生成图形验证码

    先看效果: 再上代码 public class CaptchaHelper { private static Random rand = new Random(); private static in ...

  9. iOS 生成本地验证码

    在应用程序注册.登陆或者有关支付确认的界面,经常会用到验证码,验证码有的是通过手机发送获取的,有的是在本地点击获取的,通过手机发送获取的动态验证码可以使用第三方类库实现,本地点击获取的是在本地自己绘制 ...

随机推荐

  1. .NET APlayer播放器 demo

    工作需要,想开发一款播放器,当无意间浏览到APlayer的时候大爱啊,有木有迅速投入精力,在APlayer论坛看大牛们的作品及经验,看SDK中提供的chm电子书最后看了博客园中周见智的文章(灰常好!最 ...

  2. net页面生命周期

    ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件处理程序代码以及进行呈现.了解页的生命周期非常重要,这样就能 ...

  3. 关于ScrollView嵌套RecyclerView出现item显示不全的问题

    最近使用ScrollView时,发现里面嵌套Listview显示不全,试过重写Listview的onMeasure(),并没有起作用.然后将ListView换成RecyclerView后,高度还是显示 ...

  4. HDU 6235.Permutation (2017中国大学生程序设计竞赛-哈尔滨站-重现赛)

    Permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tot ...

  5. bzoj2301(莫比乌斯反演)

    bzoj2301 题意 求区间 [a, b] 和 区间 [c, d] 有多少对数 (x, y) 使得 gcd(x, y) = k . 分析 参考ppt 参考blog 考虑用容斥分成四次查询, 对于每次 ...

  6. (寒假集训)Watering the Fields (最小生成树)

    Watering the Fields 时间限制: 1 Sec  内存限制: 64 MB提交: 26  解决: 10[提交][状态][讨论版] 题目描述 Due to a lack of rain, ...

  7. 微信小程序开发,上传wx.uploadFile 返回参数处理

    这真的是个坑,前端看了半天,说是字符串,让后台处理,后台说返回的是正确的,原来这个请求就是返回的string类型,见下图,无法取到code,需要前台自己转化. 以下为百度出来的参考: wx.reque ...

  8. Laravel 使用firstOrCreate 报错MassAssignmentException

    今天尝试使用firstOrCreate去优化一段查找不到即创建的代码,结果发现会报MassAssignmentException错误,提示我参数错误,去网上找了好久没有找到结果,最后庆幸自己解决了,把 ...

  9. 墨卡托投影、高斯-克吕格投影、UTM投影及我国分带方法

    转自原文 墨卡托投影.高斯-克吕格投影.UTM投影及我国分带方法 一.墨卡托投影.高斯-克吕格投影.UTM投影 1. 墨卡托(Mercator)投影 墨卡托(Mercator)投影,是一种" ...

  10. 使用Jenkins搭建iOS开发的CI服务器

    目录 简介     下载并运行     Jenkins配置         安装git插件         E-mail设置     自动化构建         远程仓库设置         触发条件 ...