我已经阅读了很多关于这个问题的文章,无论是在这里还是其他地方,都没有找到可以帮助我的答案。由于主题似乎相当广泛,我认为最好的方法是提问。
我目前正在通过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看到它。 问题是“私人功能[...]”还是其他地方? (正如我之前所说的那样,参加课程。)
我希望这对某人有意义,因为我宁愿迷失在这里。
答案 0 :(得分:5)
您必须先致电session_start()
才能开始分配变量会话。