3

嘿。我有一些 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'];
        }

输出:

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

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

空值

pre_dump 代码:

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

4 回答 4

4

我自己发现了错误。在我没有注意到的脚本中某处有一个 session_start() 。现在一切似乎都正常了。

于 2010-12-08T19:42:37.750 回答
0

对我来说听起来像是unset($_SESSION);被召唤了。

于 2010-12-08T19:16:05.577 回答
0

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

1) 这是由于在声明之前尝试访问 $_SESSION 变量的结果。session_start();在我自己的情况下,我已经在 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();

希望这可以帮助任何遇到同样问题的人。尽管这是在很晚的时候。

于 2014-02-15T21:44:13.217 回答
-1

无论您是否运行 session_start(),$_SESSION 始终存在。所以我认为一定是其他原因导致了你的错误。

能发一下代码吗?可能是您在某处未设置变量(请参阅此链接)。

于 2010-12-08T19:11:12.493 回答