“未定义变量:_SESSION”VS. “会议已经开始”

时间:2010-12-08 19:06:59

标签: php session error-reporting

嘿。 我有一些PHP脚本。在其中一个我有代码session_start(),当我在另一个脚本中再次有session_start()时,我收到通知:

  

注意:会话已经开始......

这是合乎逻辑的。但当我删除它时,我收到错误/通知:

  

注意:未定义的变量:_SESSION

为什么呢?我该如何解决?当我在脚本中有两个地方的session_start()时,脚本工作正常(只是稍微注意一下),但是当我没有两个session_start()时根本不起作用。

唯一的解决方案是

error_reporting(E_ALL ^ E_NOTICE);

在我的剧本中?仅仅忽略通知并不是那么糟糕的做法?

修改

我的部分代码:

            try {
            //session_start();

            $STH = DB::prepare  (   "UPDATE users SET DJ_name=?, DJ_showname=? WHERE id=?" );
            $STH->execute(array($_POST['DJ_name'], $_POST['DJ_showname'], $_SESSION['userid']));

            pre_dump($_SESSION);

            $_SESSION['DJ_name']        =   $_POST['DJ_name'];
            $_SESSION['DJ_showname']    =   $_POST['DJ_showname'];
        }

输出:

  

注意:未定义的变量:D中的_SESSION:第19行的..... \ main.php

     

注意:未定义的变量:D中的_SESSION:第21行的..... \ main.php

     

NULL

pre_dump代码:

    function pre_dump($var)
{
    echo '<pre>';
    var_dump($var);
    echo '</pre>';
}

4 个答案:

答案 0 :(得分:4)

我自己发现了这个错误。 在我的脚本中的某个地方有一个session_start(),我没有注意到。现在一切似乎都在运作。

答案 1 :(得分:0)

听起来像是unset($_SESSION);

答案 2 :(得分:0)

我最近也遇到了同样的问题。我无法访问$ _SESSION变量的内容。

1)这是因为在声明session_start();之前尝试访问$ _SESSION变量。在我自己的情况下,我已经在header.php文件中启动了一个会话。但我在include语句之前访问了$ _SESSION变量。实施例;

<?php
 $username = $_SESSION['username'];
 //do some logical operation!!!
?> 
<?php include("header.php");?>

而不是做这样的事情

<?php include("header.php");?>
<?php
 $username = $_SESSION['username'];
 //do some logical operation!!!
?> 

2)可能导致此问题的另一件事,可能是无法在所有可能需要使用

访问$ _SESSION变量的文件的顶部启动会话
session_start();

希望这有助于任何遇到同样问题的人。虽然这是在晚些时候发生的。

答案 3 :(得分:-1)

无论您是否运行session_start(),

$ _ SESSION始终存在。所以我认为其他一些必然会导致你的错误。

你可以发布代码吗?可能是你在某处取消了变量(参见this link)。