0

每当我刷新页面时,我的会话都会保持不稳定,但是当我进行控制测试时,它似乎工作正常。

控制(保持数据):

<?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。老实说,我不知道问题是什么。

此外,当我重新加载索引页面时,会话未设置。

我有更多的信息。这些页面可以保存会话数据并保留它,但是一旦加载了另一个使用会话的页面,它将取消设置所有数据。

4

1 回答 1

0

检查您是否将 Unicode 编码的 PHP 文件与BOM一起使用。

PHP 不知道 BOM。BOM 会在您的第一个之前产生输出,<?php因此 PHP 无法为会话 cookie 设置相关的 HTTP 标头。

从文档:

要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。

于 2012-12-12T15:53:40.640 回答