php,jquery-登录到同一页面


php, jquery - post login to the same page

我刚刚创建了一个小的登录系统,但它存在一些无法解决的问题。有时它会登录,有时不会。

登录由以下代码完成:

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的对话框按钮。