我刚刚创建了一个小的登录系统,但它存在一些无法解决的问题。有时它会登录,有时不会。
登录由以下代码完成:
if(isset($_POST['logedOut'])) {
setcookie('username', '', time() - 3600);
setcookie('userid', '', time() - 3600);
$logedIn = false;
} else if(isset($_POST['logedIn'])) {
echo 'POST SENT';
$expire = ($_POST['remember'] == true) ? time() + $GLOBALS['year'] : '';
setcookie('username', $_POST['logedIn'], $expire);
setcookie('userid', $_POST['id'], $expire);
$username = $_POST['logedIn'];
$userid = $_POST['id'];
$logedIn = true;
} else if (isset($_COOKIE['username'])) {
$logedIn = true;
$username = $_COOKIE['username'];
$userid = $_COOKIE['userid'];
} else {
echo 'POST NOT SENT';
$logedIn = false;
}
为了方便:
if(isset($_POST['logedIn'])) {
echo 'POST SENT';
$logedIn = true;
} else {
echo 'POST NOT SENT';
$logedIn = false;
}
在javascript内部,我调用了
function checkUser (mail, pass, rem) {
var sectionName = 'checkUser';
$.ajax({
async: true,
type: 'POST',
url: 'php/readDB.php',
cache: false,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: {section: sectionName, email: mail, password: pass, remember: rem},
dataType: 'text',
timeout: 3000,
beforeSend: function() {
console.log('Read from DB called');
},
success: function(data) {
if(data!='false') {
$('<form action="#" method="post"><input type="hidden" name="logedIn" value="' + mail + '" /><input type="hidden" name="remember" value="' + rem + '" /><input type="hidden" name="id" value="' + data + '" /></form>').appendTo('body').submit();
} else {
$('#afterDialog').html('Uživatelské jméno nebo heslo je špatně zadáno.');
$('#afterDialog').dialog('open');
}
},
error: function(request, errorType, errorMessage) {
alert('Error: ' + errorType + ' with message: ' + errorMessage);
},
complete: function() {
console.log('Read from DB completed');
}
});
}
每次我填写表单并单击按钮时,都会调用此函数,在每种情况下,如果表单填写正确,则会转到$('…').submit();,但在90%的尝试中,没有传输POST数据,PHP页面回显"POST NOT SENT"。10%的用户成功登录(在登录表单中使用相同的输入数据(邮件、通行证、rem)。所以,你知道问题在哪里吗?
最后,我有了它,问题出现在jQuery UI对话框中。这是在填写表格后按Enter键和点击对话框的"登录"按钮之间的区别。现在我需要将表单的Enter键绑定到jqueryui的对话框按钮。