展开全部

我用的方法是判断$_session里的验证码值是否与post提交的验证码值是否相等,经过测试没有问636f707962616964757a686964616f31333363396432题,代码如下:

前台表单:

/Login/index/" method="post" name="login">

登陆

请输入用户名和密码

用户名

密码

验证码

/verifyShow" οnclick="this.src='/verifyShow/'+Math.random();"/>换一张

登陆

js效果//登录表单验证

var check = {

username: false, //用户名

password: false, //密码

code:     false  //验证码

}

//提示信息

var mesg = '';

$(function () {

var login = $('form[name=login]');

// 登录提交事件

login.submit(function () {

var isOk = check.username && check.password && check.code;

if(isOk){

return true;

}

//点击提交依次触发失去焦点再次验证

$('input[name=username]',login).trigger('blur');

$('input[name=password]',login).trigger('blur');

$('input[name=code]',login).trigger('blur');

return false;

});

//验证码验证码

$('input[name=code]',login).blur(function () {

var code = $(this).val();

var mesgBox = $(".mesgBox span");

//不能为空

if (code == '') {

mesg = '验证码不能为空';

mesgBox.html(mesg);

mesgBox.parent().removeClass('display-hide');

check.code = false;

return;

}

//异步验证验证码

$.post(PATH + '/ajax_code/',{code:code},function (status) {

if(status){

mesg = '';

mesgBox.html(mesg);

mesgBox.parent().addClass('display-hide');

check.code = true;

}else{

mesg = '验证码不正确';

mesgBox.html(mesg);

mesgBox.parent().removeClass('display-hide');

check.code = false;

}

},'json');

});

})

后台控制器:namespace Admin\Controller;

use Think\Controller;

use Think\Verify;

class LoginController extends Controller {

private $verify;

//验证码

public function verifyShow(){

//验证码设置

$config = array(

'useImgBg' => false,            // 使用背景图片

'fontSize' => 16,              // 验证码字体大小(px)

'useCurve' => true,            // 是否画混淆曲线

'useNoise' => false,           // 是否添加杂点

'imageH'   => 45,              // 验证码图片高度

'imageW'   => 110,             // 验证码图片宽度

'length'   => 4,               // 验证码位数

'fontttf'  => '',              // 验证码字体,不设置随机获取

'bg'       => array(243, 251, 254),  // 背景颜色

'reset'    => true,           // 验证成功后是否重置

);

$verify = new Verify($config);

//验证码输出

$verify->entry();

}

public function _initialize(){

$this->verify = new Verify();

}

//后台管理员登录页

public function index(){

if(IS_POST && !empty($_POST)) {

//一、判断验证码是否正确

foreach($_SESSION as $key => $value){

$code =  $value['verify_code']; //session里的验证码值

}

if($this->verify->check($_POST['code']) == $code) { //post提交过来的验证码值 与 session里的验证码值判断

//二、用户民与密码验证

//验证用户名

$userData = new \Model\LoginModel();

//在LoginModel里创建一个checkLogin方法,用于验证用户名与密码

//验证成功,把当前管理员的一条记录信息都返回

//验证失败,返回NULL

$info = $userData->checkLogin($_POST['username'], $_POST['password']);

if($info) {

//session持久化用户信息(id/name),跳转到后台首页

session('admin_id', $info['lid']);

session('admin_name',$info['username']);

$this->redirect('Index/index', '', 1, '正在登陆...');

} else {

$this->redirect('index', '', 1, '用户名或密码错误');

}

} else {

$this->redirect('index', '', 1, '验证码错误');

}

}

$this-> display();

}

//异步验证验证码

public function ajax_code(){

if(!IS_AJAX) $this->redirect('index', '', 1, '页面不存在');

if($this->verify->check(I('post.code'))){

echo 1;

}else{

echo 0;

}

}

}

希望对你有帮助

ajas php 验证码_thinkPHP3.2.3利用Ajax前台实现验证码验证,但通过form表单的按钮提交后,验证码一直错误!如何解决?...相关推荐

  1. 利用beforeSend实现提交加载中、form表单的重复提交等前端功能

    前文   在用JQ+bootstrap写前端的时候,有时需要实现点击按钮后失效的功能,比如下载按钮,为了避免网络延迟而引起的页面不及时跳转,让用户多次点击按钮,造成的服务器压力和用户体验就都不友好.发 ...

  2. form表单的action提交写到js中来,同时onclick事件也写在js中来。其action也可以通过ajax来提交的。...

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  3. 用ajax提交表单给数据库,如何利用ajax提交form表单到数据库

    如何利用ajax提交form表单到数据库 发布时间:2021-06-17 14:52:49 来源:亿速云 阅读:75 作者:小新 这篇文章主要介绍如何利用ajax提交form表单到数据库,文中介绍的非 ...

  4. ajax提交表单跨域啊,form表单提交没有跨域问题,但ajax提交存在跨域问题

    浏览器的策略本质是:一个域名下面的JS,没有经过允许是不能读取另外一个域名的内容,但是浏览器不阻止你向另外一个域名发送请求. 所以form表单提交没有跨域问题,提交form表单到另外一个域名,原来页面 ...

  5. ajax 模拟表单提交,Ajax模拟Form表单提交,含多种数据上传

    ---恢复内容开始--- Ajax提交表单.使用FormData提交表单数据和上传的文件(这里的后台使用C#获取,你可以使用Java一样获取) 有时候前台的数据提交到后台,不想使用form表单上传,希 ...

  6. 【Ajax】form表单

    一.form表单的基本使用 什么是表单 表单在网页中主要负责数据采集功能.HTML中的<form>标签,就是用于采集用户输入的信息,并通过<form>标签的提交操作,把采集到的 ...

  7. jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据

    1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...

  8. ajax提交form表单到数据库(无刷新)

    在静态页面提交表单到数据库很简单就是单纯的 <form action="test.php" method="post"> </form> ...

  9. 利用ajax提交form表单数据

    利用thymeleaf引擎创建的html中,使用了adminLTE模板,ajax提交form表单数据,本以为很容易实现,却遇到了很多问题,这里进行总结. 1.get方式提交 通过serialize() ...

最新文章

  1. Python中if__name__==__main__:该如何理解
  2. 【转】 一些NET的实用类,不错
  3. 【java】Lombok的使用
  4. RandomAccessFile学习笔记
  5. Spring-AOP @AspectJ语法基础
  6. URAL 1427. SMS(DP+单调队列)
  7. oracle 增加ora容量_案例:Oracle报错ORA-01144 详解数据文件大小32GB的限制的原因
  8. ES6_入门(1)_let命令
  9. 使用信号实现异步通知机制的例子
  10. Java日常编程优化细节
  11. 高斯滤波程序编写 opencv C++ CSU
  12. java中struts2框架,概述Java的struts2框架
  13. 自动锁定计算机怎么设置,win10如何设置自动锁定屏幕_win10设置自动锁屏的步骤...
  14. FFMpeg视频格式讲解
  15. VS运行程序时遇到0xc0150002的问题
  16. 计算机专业必须考过英语4级吗,计算机专业英语必须过六级吗
  17. Oracle 的 Round函数详解
  18. Unity实现植物识别示例详解
  19. 在win7上安装python3.8 + Robotframework -RIDE,启动报错
  20. IIR滤波器设计之冲激响应不变法与双线性变换法

热门文章

  1. 2-3 编写一个三角形类
  2. 使用pyenv进行Python多版本控制
  3. “空气洗”再迎迭代,模仿者又有了新目标
  4. php psy,psysh --php交互式控制台
  5. Python获取代理池和提取可用IP
  6. 【项目实战-MATLAB】:基于模板匹配的人民币识别
  7. Python骚操作:分析史上最好用的APP有哪些?
  8. ams1117 lm317 对比_浅谈LM1117输入电流和输出电流的差异
  9. 鸿蒙策略股票交易系统,股票交易策略有哪些?5种不同的交易策略解读
  10. 你想要的Flexsim学习途径这里都有