"Неопределенная переменная: _SESSION" VS. «Сессия уже началась» - PullRequest
3 голосов
/ 08 декабря 2010

Эй.У меня есть несколько сценариев 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'];
        }

Вывод:

Примечание: неопределенная переменная:_SESSION в D: ..... \ main.php в строке 19

Примечание: неопределенная переменная: _SESSION в D: ..... \ main.php в строке 21

NULL

код pre_dump:

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

Ответы [ 4 ]

4 голосов
/ 08 декабря 2010

Я сам нашел ошибку.Где-то в моем скрипте была session_start (), которую я не заметил.Кажется, все работает сейчас.

0 голосов
/ 16 февраля 2014

Я также недавно столкнулся с той же проблемой.Я не смог получить доступ к содержимому переменной $ _SESSION.

1) Это было результатом попытки получить доступ к переменной $ _SESSION до объявления session_start();. В моем собственном случае я уже началсеанс в файле header.php.Но я обращался к переменной $ _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();

Надеюсь, это поможет любому, кто сталкивается с той же проблемой.Хотя это наступает в поздний час.

0 голосов
/ 08 декабря 2010

Звучит так, как будто unset($_SESSION); был вызван.

0 голосов
/ 08 декабря 2010

$ _ SESSION всегда существует независимо от того, запускаете ли вы session_start () или нет. Поэтому я думаю, что что-то еще должно быть причиной вашей ошибки.

Не могли бы вы опубликовать код? Возможно, вы где-то сбросили переменную (см. эту ссылку ).

...