$ _SESSION变量未在AJAX调用中设置

时间:2015-09-03 20:48:17

标签: php jquery session-variables

我为用户身份验证编写了此调用:

$( '.sign-in' ).click( function(e) {
    e.preventDefault();
    var logincall = $.ajax({
        type: "POST",
        url: "../snippets/auth.php",
        data: { username: $('#id_email').val(), password:   $('#id_password').val() }
    });
    logincall.done(function( result ) {
        alert( 'finished: ' + result );
        if( result == 'valid' ) {
            location.reload();
        } else {
            $( '.warning' ).toggleClass('hidden');
        }
    });
    logincall.fail(function( jqXHR, textStatus ) {
      alert( "Request failed: " + textStatus );
    });
});

这里是auth.php函数

if( isset($_POST['username']) && isset($_POST['password']) ) {

    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $query = "SELECT COUNT(*) FROM member WHERE username='$username' AND password='$password';";
    $result = $mysqli->query($query);
    $result = $result->fetch_array(MYSQLI_ASSOC);

    if( $result['COUNT(*)'] !== 0 ) {
        $_SESSION['logged'] = true; //this sets
        $query = "SELECT id, level FROM member WHERE username='$username' AND password='$password';";
        $result = $mysqli->query($query);
        $result = $result->fetch_array(MYSQLI_ASSOC);
        $_SESSION['uid'] = $result['id']; //this DOES NOT set
        $_SESSION['lvl'] = $result['level']; //this DOES NOT set
        echo json_encode('valid');
    } else {
        echo json_encode('invalid');
    }
}

奇怪的是,如果我直接导​​航到

myurl.com/snippets/auth.php?username=myusername&password=mypassword

它设置了另外两个会话变量,但我永远无法让index.php来接收它们。

我甚至在其中添加了刷新线以确保 可以选择它们,并且$_SESSION['logged']就好了,但不是['uid']['level']

0 个答案:

没有答案