PHP $ _SESSION问题

时间:2010-08-31 13:37:11

标签: php

出于某种原因,我的帖子ID会话没有转移到我的评分脚本页面。我从帖子页面中的帖子网址抓取post_id,然后将其转换为$_SESSION以将其带到我的评分脚本页面。保存登录用户ID $_SESSION的{​​{1}}如果已登录,则会转到评分脚本,而不是帖子$_SESSION['user_id']。如何将我的帖子ID转到我的评分脚本页面?

我的两个页面顶部都有$_SESSION

session_start();

2 个答案:

答案 0 :(得分:2)

在开始会话之前,您可能会有一些输出。如果是这种情况,则可能无法正确设置会话。启用调试模式并搜索有关session_start()函数的错误:

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

如果无法切换调试,请检查error_log。

错误可能如下所示:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\phptests\test.php:1) in C:\xampp\htdocs\phptests\test.php  on line 4
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\phptests\test.php:1) in C:\xampp\htdocs\phptests\test.php on line 4

答案 1 :(得分:0)

php会话出现问题的最常见原因是php脚本在会话开始之前输出了一些内容。

好的,你可能没有任何echo语句,或者除了阅读会话之外你甚至可能没有任何PHP代码......但是要花时间检查你的代码开始之前会发生什么。

例如,让我们发现差异:(只有一个代码可以使用)

 <?php
    session_start();
    $_SESSION["test"] = "hello";
    if($_SESSION["test"] == "hello";
    {
        echo "Session is working!";
    }
    else
    {
        echo "Session is NOT working!";
    }
 ?>

和...

<?php
    session_start();
    $_SESSION["test"] = "hello";
    if($_SESSION["test"] == "hello";
    {
        echo "Session is working!";
    }
    else
    {
        echo "Session is NOT working!";
    }
 ?>

不同之处在于,在session_start()之前打开任何数据之前只有一个空格会阻止脚本运行。

我去过那里 - 在文档顶部有一个意外的空格或空白行会产生严重的问题,但如果是这种情况,启用php错误输出应该会告诉你哪里出错了。