PHP Centos:会话无法存储

时间:2014-09-19 07:18:18

标签: php session

嗨今天我面临一个奇怪的问题 登录验证后,我将用户名存储在会话中,并将其重定向到其他页面。

验证页面。

if (mysql_num_rows($sqlQuery) == 1) {
    session_start();
   $_SESSION['username']  = $login;
   print $_SESSION['username'];
   header("Location: dialout.php");

}

。 在dialout.php上我试图打印像

这样的会话
var_dump($_SESSION);

但它没有打印任何东西。

一些谷歌搜索我发现问题可能在于编写会话目录。

所以检查我写了一个脚本。

print session_save_path();
if (!is_writable(session_save_path())) {
    echo 'Session path "'.session_save_path().'" is not writable for PHP!'; 
    }
else{
 echo "writable -------------";
}

从上面的脚本我可以写。

只是想知道为什么我无法访问dialout.php页面上的会话

3 个答案:

答案 0 :(得分:1)

在“验证”页面中,以下代码应位于文件顶部,作为代码中的第一行。

session_start();

如果您想使用会话变量,它应该包含在每个页面中。

答案 1 :(得分:1)

首先,执行这些常规检查:

  1. 确保session_start();在任何会话出现之前调用 调用。所以一个安全的赌注就是把它放在你的开头 页面,在开幕后立即

  2. 标题重定向后,使用exit()结束当前脚本; (其他人也建议使用session_write_close();和 session_regenerate_id(true),你可以尝试那些,但我会用 出口();)

  3. 确保在您用于测试的浏览器中启用了Cookie 它就开始了。

  4. 确保register_globals已关闭,您可以在php.ini上查看 文件,也使用phpinfo()。请参阅如何     把它关掉。

  5. 确保您没有删除或清空会话

  6. 确保$ _SESSION超全局数组中的键不是 覆盖任何地方

  7. 确保您重定向到同一个域。所以从一个重定向 www.yourdomain.com到yourdomain.com不会召开会议 前进。

  8. 确保您的文件扩展名为.php(它会发生!)

  9. 都可以在这里找到:PHP session lost after redirect

答案 2 :(得分:0)

在dialout.php中调用session_start函数,以便访问会话变量,如下所示:

session_start();
var_dump($_SESSION);