Ajax提交表单时验证码自动验证 php后端验证码检测


Posted in PHP onJuly 20, 2016

本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码。

1、前端代码 index.html

<!DOCTYPE html>
<html>
<head>
 <title>验证码提交自验证</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-Language" content="zh-CN" />
</head>
<body>
 <form action="doPost.php" method="POST">
  
  <div class="row">
   <label for="username">用户名</label>
   <input type="text" name="username" id="username" />
  </div>
  <div class="row">
   <label for="mod-captcha-code">验证码</label>
   <input name="code" id="mod-captcha-code" size="6" class="zjcaptcha" style="width:80px" type="text"/>
   <img class="code-img" style="height:30px;width:80px;" src="createcode.php?t=0" onclick="this.src=this.src.substring(0,this.src.indexOf('?')+1)+Math.random();return false;" />
   <script type="text/javascript" src="http://www.zjmainstay.cn/jquery/jquery-1.8.2.min.js"></script>
   <div class="yzmtips" style="color:red"></div>
  </div>
  <div class="row">
   <input type="submit" value="提交" class="submitBtn"/>
  </div>
 </form>
<script>
(function($){
 $(document).ready(function(){
  $(".submitBtn").click(function() {
   var obj = $(this);
   $.ajax({
    url:'checkcode.php',
    type:'POST',
    data:{code:$.trim($("input[name=code]").val())},
    dataType:'json',
    async:false,
    success:function(result) {
     if(result.status == 1) {
      obj.parents('form').submit(); //验证码正确提交表单
     }else{
      $(".code-img").click();
      $(".yzmtips").html('验证码错误!');
      setTimeout(function(){
       $(".yzmtips").empty();
      },3000);
     }
    },
    error:function(msg){
     $(".yzmtips").html('Error:'+msg.toSource());
    }
   })
   return false;
  })
 });
})(jQuery);
</script>
</body>
</html>

 2、后端验证码检测 checkcode.php

<?php
/**
* 用户验证码验证文件
* @Author:Zjmainstay
* @version : 1.0
* @creatdate: 2013-10-4
*/
session_start();
echo json_encode(array('status'=>(int)($_SESSION["CHECKCODE"] == $_POST['code'])));
exit;

 源码下载地址:Ajax实现提交表单时验证码自动验证

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
『PHP』PHP截断函数mb_substr()使用介绍
Apr 22 PHP
关于php循环跳出的问题
Jul 01 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 #PHP
PHP+Ajax验证码验证用户登录
Jul 20 #PHP
PHP+Ajax实现验证码的实时验证
Jul 20 #PHP
php+ajax注册实时验证功能
Jul 20 #PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 #PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 #PHP
php+flash+jQuery多图片上传源码分享
Jul 27 #PHP
You might like
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
为Python的web框架编写MVC配置来使其运行的教程
2015/04/30 Python
深入了解Python数据类型之列表
2016/06/24 Python
在python中安装basemap的教程
2018/09/20 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
python db类用法说明
2020/07/07 Python
园长自我鉴定
2013/10/06 职场文书
质检部岗位职责
2013/11/11 职场文书
学校安全工作制度
2014/01/19 职场文书
厨师长岗位职责
2014/03/02 职场文书
培训讲师岗位职责
2014/04/13 职场文书
信仰心得体会
2014/09/05 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL