来自jQuery $ .post的PHP SESSION

时间:2013-03-25 22:40:44

标签: php jquery session .post

我已经阅读了很多关于这个问题的文章,无论是在这里还是其他地方,都没有找到可以帮助我的答案。由于主题似乎相当广泛,我认为最好的方法是提问。

我目前正在通过jquery文件中的$ .post脚本将表单中的登录数据发送到php脚本。没有问题。我有一个类,它通过一系列函数来验证和保护字符串,所以没有任何问题。我一直在设置会话,我可以打印出来并通过向$ .post添加函数(数据)来获取。

我已将session_start()添加到php-script和index.php。我正在使用Chromium并且可以看到已经设置了一个会话,但是当我创建一个print_r($ _ SESSION)时;它出来了。显然,这也导致我的if(isset($ _ SESSION ['uid']))也无效。

JS:

$('#login').submit(function(e){
    e.preventDefault();
    values = {};
    var url = '../admin/php/signIn.php';
    console.log('Clicked on submit.');
    $.each($(this).serializeArray(), function(i, field){
        values[field.name] = field.value;
    });
    $.post(url, {username: values.username, password: values.password})
    .done(function(data){ location.reload(); /*alert(data);*/ })
    .fail(function(){ alert('Fail.'); });
});

PHP:

private function login($uid, $uname){
    $_SESSION['uid'] = $uid;
    echo $_SESSION['username'] = $uname;
    session_start();
}

我在其中一个会话中添加了一个echo,只是为了能够通过jquery看到它。 问题是“私人功能[...]”还是其他地方? (正如我之前所说的那样,参加课程。)

我希望这对某人有意义,因为我宁愿迷失在这里。

1 个答案:

答案 0 :(得分:5)

您必须先致电session_start() 才能开始分配变量会话。