2

我的 php SESSION 变量有问题我的身份验证系统在我的 xampp 服务器上运行良好,现在我有问题,因为我搬到了 bluehost

通常,如果我打开像 index.php 这样的页面,它会检查您是否已登录,如果您没有将您发送到登录页面,但这不起作用,只是为了测试,我尝试回显$_SESSION['username']并出现空白的

现在我按照 ALEX 所说的做了,但出现了这个错误:无法修改标头信息 - 标头已由 /home7/blogboua/public_html/blog 中的(输出开始于 /home7/.../public_html/blog.php:4)发送。第 22 行的 php

这是代码:

<?php session_start(); ?>
<html>
<head>
<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL);
/*-----Connect to Database-----*/
 include ('connect_database_2.php');

//check if logged in
function isLoggedIn()
{
    if(isset($_SESSION['valid']) && $_SESSION['valid'])
        return true;
    return false;
}


//if the user has not logged in
if(!isLoggedIn())
{
    header('Location: login_form.html');
    die();
}

/* get username */
$username = $_SESSION['username'];


/*-----Include Navigation------*/
include ('frame.html');

?>
4

3 回答 3

2

Location您已<html><head>在第 2-3 行发送后尝试发送标头。你不能那样做。必须在发送任何输出之前发送标头。

老实说,我不知道您的代码在本地服务器上是如何工作的。

于 2012-03-17T09:39:26.503 回答
1

设置在<?php您的index.php...

ini_set('display_errors', 'on');
error_reporting(E_ALL);

然后重新加载index.php(之前的空白页)。

它会告诉你错误的原因。可能它无法将会话数据写入/tmp/.

于 2012-03-17T09:23:54.477 回答
1

如果您使用像 bluehost 这样的共享服务提供商,那么您需要小心您对会话持久性的假设,因为这些托管服务提供商将垃圾收集/清理旧用户 /tmp 文件。IMO,避免这种情况的最简单方法是声明显式会话处理程序并将会话上下文存储在 MySQL D/B 中。有关如何执行此操作的示例, 请参阅PHP session_save_handle r 讨论。

于 2012-03-17T09:38:24.930 回答