Javascript 如果用户两次插入错误的凭证,Jquery登录功能将不起作用
我有这个功能:Javascript 如果用户两次插入错误的凭证,Jquery登录功能将不起作用,javascript,php,jquery,Javascript,Php,Jquery,我有这个功能: $(function() { $("#loginform").submit(function(e) { e.preventDefault(); }).validate({ rules: { username: { required: true, email: true, }, password: {
$(function() {
$("#loginform").submit(function(e) {
e.preventDefault();
}).validate({
rules: {
username: {
required: true,
email: true,
},
password: {
required: true,
}
},
// Specify the validation error messages
messages: {
username: {
required: "please, enter your email",
email: "This is not a valid email!",
},
password: {
required: "please, enter your password",
}
},
submitHandler: function(form) {
$("#loginform").append('<div style="width:40%; margin: 20px auto;"class="loggingIn"><h4 style-"color:#ffffff; text-align:center;">Logging in ...</h4></div>');
$("#loginform").append('<div class="spinningWheel" style="width:100%; text-align:center;"><img src="/images/ajaxspinner.gif" / width="50px;"></div>');
$(".redFormButton").hide();
var username = $('input[id=username]').val();
var password = $('input[id=password]').val();
var token = $('input[id=token]').val();
$.ajax({
url: '/processLogin.php',
type: 'post',
dataType: 'json',
data: {'username': username , 'password':password, 'token':token},
success: function(data) {
if (data == true) {
$(".loggingIn").remove();
$(".spinningWheel").remove();
window.location.replace("index.php");
} else {
$(".loggingIn").remove();
$(".spinningWheel").remove();
$(".redFormButton").show();
$("#loginform").append('<div style="width:80%; margin: 0 auto;"class="loggingError"><h4 style="color:red; text-align:center;">the username or password is wrong. Please Check Again. </h4></div>');
}
},
}); // end ajax call
return false; //This doesn't prevent the form from submitting.
}
});
});
令牌类为:
<?php
class Token {
public static function generate() {
return Session::put('token', md5(uniqid()));
}
public static function check($token) {
$tokenName = Config::get('session/token_name');
if(Session::exists($tokenName) && $token === Session::get($tokenName)) {
Session::delete($tokenName);
return true;
}
return false;
}
}
知道我如何继续使用令牌吗?试试这个技巧
在这条线上换车
var username = $('input[id=username]').val();
var password = $('input[id=password]').val();
var token = $('input[id=token]').val();
$.ajax({
url: '/processLogin.php',
到
提示:学习如何格式化代码以提高可读性@JaredFarrish你完全正确我知道。。。我会努力改进它。@JaredFarrish顺便说一句,你知道为什么这不起作用吗?;谢谢你。不幸的是,它不能解决问题。由于我输入了错误的密码,第一次它仍然返回“false”,第二次它直接进入processLogin.php的末尾,而没有评估上面编写的任何代码。最后一行。如果用户登录失败,请尝试使用jquery重置表单。我尝试使用$'loginform'[0]。重置,问题仍然存在。我不明白为什么。第一次为False,然后返回我在processLogin.phpi中回显的任何内容。对此,我真的很抱歉,但我认为如果论坛有错误,您需要使用静态变量true或False重新编写代码。问题是由Token类给出的,而不是由jquery给出的。我更新了我的问题。知道为什么不起作用了吗。可能是因为是静态方法?
<?php
class Token {
public static function generate() {
return Session::put('token', md5(uniqid()));
}
public static function check($token) {
$tokenName = Config::get('session/token_name');
if(Session::exists($tokenName) && $token === Session::get($tokenName)) {
Session::delete($tokenName);
return true;
}
return false;
}
}
var username = $('input[id=username]').val();
var password = $('input[id=password]').val();
var token = $('input[id=token]').val();
$.ajax({
url: '/processLogin.php',
var makhash = (new Date).getTime();
var username = $('input[id=username]').val();
var password = $('input[id=password]').val();
var token = $('input[id=token]').val();
$.ajax({
cache: false,
url: '/processLogin.php?hashcode='+makhash,