繁体   English   中英

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

[英]“Undefined variable: _SESSION” VS. “A session had already been started”

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

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

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

1)这是在声明session_start();之前尝试访问$ _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();

希望这可以帮助任何偶然发现同样问题的人。 虽然这是在一个较晚的时间。

对我来说就像unset($_SESSION); 被称为。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM