ajas php 验证码_thinkPHP3.2.3利用Ajax前台实现验证码验证,但通过form表单的按钮提交后,验证码一直错误!如何解决?...
展开全部
我用的方法是判断$_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表单的按钮提交后,验证码一直错误!如何解决?...相关推荐
- 利用beforeSend实现提交加载中、form表单的重复提交等前端功能
前文 在用JQ+bootstrap写前端的时候,有时需要实现点击按钮后失效的功能,比如下载按钮,为了避免网络延迟而引起的页面不及时跳转,让用户多次点击按钮,造成的服务器压力和用户体验就都不友好.发 ...
- form表单的action提交写到js中来,同时onclick事件也写在js中来。其action也可以通过ajax来提交的。...
假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...
- 用ajax提交表单给数据库,如何利用ajax提交form表单到数据库
如何利用ajax提交form表单到数据库 发布时间:2021-06-17 14:52:49 来源:亿速云 阅读:75 作者:小新 这篇文章主要介绍如何利用ajax提交form表单到数据库,文中介绍的非 ...
- ajax提交表单跨域啊,form表单提交没有跨域问题,但ajax提交存在跨域问题
浏览器的策略本质是:一个域名下面的JS,没有经过允许是不能读取另外一个域名的内容,但是浏览器不阻止你向另外一个域名发送请求. 所以form表单提交没有跨域问题,提交form表单到另外一个域名,原来页面 ...
- ajax 模拟表单提交,Ajax模拟Form表单提交,含多种数据上传
---恢复内容开始--- Ajax提交表单.使用FormData提交表单数据和上传的文件(这里的后台使用C#获取,你可以使用Java一样获取) 有时候前台的数据提交到后台,不想使用form表单上传,希 ...
- 【Ajax】form表单
一.form表单的基本使用 什么是表单 表单在网页中主要负责数据采集功能.HTML中的<form>标签,就是用于采集用户输入的信息,并通过<form>标签的提交操作,把采集到的 ...
- jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...
- ajax提交form表单到数据库(无刷新)
在静态页面提交表单到数据库很简单就是单纯的 <form action="test.php" method="post"> </form> ...
- 利用ajax提交form表单数据
利用thymeleaf引擎创建的html中,使用了adminLTE模板,ajax提交form表单数据,本以为很容易实现,却遇到了很多问题,这里进行总结. 1.get方式提交 通过serialize() ...
最新文章
- Python中if__name__==__main__:该如何理解
- 【转】 一些NET的实用类,不错
- 【java】Lombok的使用
- RandomAccessFile学习笔记
- Spring-AOP @AspectJ语法基础
- URAL 1427. SMS(DP+单调队列)
- oracle 增加ora容量_案例:Oracle报错ORA-01144 详解数据文件大小32GB的限制的原因
- ES6_入门(1)_let命令
- 使用信号实现异步通知机制的例子
- Java日常编程优化细节
- 高斯滤波程序编写 opencv C++ CSU
- java中struts2框架,概述Java的struts2框架
- 自动锁定计算机怎么设置,win10如何设置自动锁定屏幕_win10设置自动锁屏的步骤...
- FFMpeg视频格式讲解
- VS运行程序时遇到0xc0150002的问题
- 计算机专业必须考过英语4级吗,计算机专业英语必须过六级吗
- Oracle 的 Round函数详解
- Unity实现植物识别示例详解
- 在win7上安装python3.8 + Robotframework -RIDE,启动报错
- IIR滤波器设计之冲激响应不变法与双线性变换法