1

我在这里和其他地方阅读了很多关于这个问题的文章,但没有找到可以帮助我的答案。而且由于主题似乎相当广泛,我认为最好的方法是询问。

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

我已将 session_start() 添加到 php 脚本和 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();
}

我在其中一个会话上添加了一个回声,只是为了能够通过 jquery 看到它。是“私人功能[...]”还是其他地方的问题?(就像我之前所说的那样,与班级一起玩。)

我希望这对某人有意义,因为我在这里迷路了。

4

1 回答 1

5

您必须在开始分配可变会话session_start() 之前调用。

于 2013-03-25T22:42:40.800 回答