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

会有一股神秘感。 提交于 2019-12-23 18:07:53

问题


Hey. I have some php scripts. In one of them i have the code session_start(), and when I in another script again have session_start() i get the notice:

Notice: A session had already been started...

Thats logical. But when I remove it I get the error/notice:

Notice: Undefined variable: _SESSION

Why? And how do I fix it? The scripts works fine when I have session_start() two places in the script (only get an little notice), but doesn't work at all when I doesn't have two session_start().

Is the only solution to have an

error_reporting(E_ALL ^ E_NOTICE);

in my script? And isn't that bad practice to just ignore notices?

Edit:

Parts of my code:

            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'];
        }

Output:

Notice: Undefined variable: _SESSION in D:.....\main.php on line 19

Notice: Undefined variable: _SESSION in D:.....\main.php on line 21

NULL

pre_dump code:

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

回答1:


I found the error myself. Had an session_start() somewhere in my script that I didn't notice. Everything seems working now.




回答2:


Sounds to me like unset($_SESSION); was called.




回答3:


I also encountered the same problem recently. I could not access the contents of the $_SESSION variable.

1) This was as a result of trying to access the $_SESSION variable before the declaration of session_start(); In my own case, I had already started a session in a header.php file. But I was accessing the $_SESSION variable before the include statement. Example;

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

instead of doing something like this

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

2) Another thing that may cause this problem, maybe a failure to start a session at the top of all the files that may require access to the $_SESSION variable using

session_start();

Hope this helps anybody that stumbles on the same problem. Although this is coming at a late hour.




回答4:


$_SESSION always exists no matter whether you run session_start() or not. So I think something else must be causing your error.

Could you post the code? It could be you have unset the variable somewhere (see this link).



来源:https://stackoverflow.com/questions/4391251/undefined-variable-session-vs-a-session-had-already-been-started

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!