每当我刷新页面时,我的会话都会一直处于未设置状态,但是当我进行控制测试时,它似乎工作正常。
控制(保留数据):
<?php
session_start();
echo(var_dump($_SESSION));
$_SESSION['name'] = 'john doe';
?>
index.php的顶部
<?php
session_start();
echo(var_dump($_SESSION));
include('utils/utils.php');
?>
登录页面:
<?php
session_start();
include('utils.php');
if(isset($_POST['email']) && isset($_POST['password'])){
$email = filter($_POST['email']);
$password = getPwd(filter($_POST['password']));
if(!isset($_SESSION['email']) && !isset($_SESSION['password'])){
if(isAccount($email, $password)){
$key = genAuthKey();
$_SESSION['email'] = $email;
$_SESSION['auth_key'] = $key;
mysql_query("update `users` set `auth-key`= '$key' where `email`='$email'") or die(mysql_error());
print("ok");
}else {
print('error');
}
}else {
print('error');
logOut();
}
}else {
print('error');
}
?>
代码被触发,因为它更新了表中的auth-key。老实说,我不知道问题是什么。
此外,当我重新加载索引页面时,会话未被设置。
我还有更多信息。这些页面可以保存会话数据并保留它,但是一旦加载了另一个使用会话的页面,它将取消设置所有数据。
答案 0 :(得分:0)
检查您是否使用带有BOM的Unicode编码的PHP文件。
PHP不知道BOM。 BOM会在您的第一个<?php
之前产生输出,因此PHP无法为会话cookie设置相关的HTTP标头。
来自文档:
要使用基于cookie的会话,必须先调用session_start() 向浏览器输出任何内容。