我提交表单时需要一个静态函数调用Token::generate();
。
正如您可以看到使用我的方法创建令牌的变量$token
。
然后,您会看到将var添加到表单的变量$hidden
。
问题在于,如果用户登录失败,那么表单将会清除,以便他们可以输入上次尝试中创建的错误信息。
如果用户尝试再次使用该令牌,则无法使用令牌,因为该令牌已被使用。
我应该创建一个只生成令牌的php文件吗?然后我可以使用ajax来获取获取令牌的get请求吗?
会有更好的方法吗?
if ($user->isLoggedin()) {
echo '<span class="profile-link"><a class="titles red-links" href="/' . $user->data()->username . '">' . $user->data()->username . '</a></span>';
} else {
$token = Token::generate();
$hidden = '<input type="hidden" name="token" value="' . $token . '">';
?><script>
jQuery(document).ready(function(){
document.body.style.paddingTop="3px";
$('a[href^="#fallr-"]').click(function(){
var id = $(this).attr('href').substring(7);
methods[id].apply(this,[this]);
return false;
});
var methods = {
login : function(){
var login = function(){
var username = $(this).children('form').children('input[type="text"]').val();
var password = $(this).children('form').children('input[type="password"]').val();
var remember = $(this).children('form').children('input[name="remember"]').val();
var token = $(this).children('form').children('input[name="token"]').val();
if(username.length < 1 || password.length < 1 || token.length < 1){
alert('Invalid!\nPlease fill all required forms');
console.log(token)
} else {
var data = {
username: username,
password: password,
remember: remember,
token: token,
}
$.ajax({
type: "POST",
url: "login.php",
data: data,
dataType: "text",
cache: false,
success: function(data){
console.log('here');
if(data === 'login_success') {
window.location.href = '/members/';
} else {
$('#error').append(data);
$('form#login')[0].reset();
$('form#login').children('input[name=username]').on('click', function() {
$('#error').html('');
});
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
}
});
}
}
$.fallr.show({
icon : 'secure',
width : '400px',
content : '<h4 class="titles">Login</h4>'
+ '<span id="error"></span>'
+ '<form id="login">'
+ '<input placeholder="Username" name="username" type="text"/'+'>'
+ '<input placeholder="Password" name="password" type="password"/'+'>'
+ '<input type="checkbox" name="remember" type="remember"/'+'> Remember Me'
+ '<?php echo $hidden; ?>'
+ '</form>',
buttons : {
button1 : {text: 'Submit', onclick: login},
button4 : {text: 'Cancel'}
}
});
}
};
});
</script>
<a href="#" class="titles red-links">Register</a><span class="titles red"> | </span><a href="#fallr-login" class="titles red-links">Login</a>