Привет. У меня есть некоторые скрипты 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
НОЛЬ
Код pre_dump:
function pre_dump($var) { echo '<pre>'; var_dump($var); echo '</pre>'; }
Я сам нашел ошибку. Имел session_start () где-то в моем скрипте, который я не заметил. Сейчас все работает.
Звучит для меня как unset($_SESSION);
назывался.
Недавно я столкнулся с той же проблемой. Я не смог получить доступ к содержимому переменной $ _SESSION.
1) Это было связано с попыткой доступа к переменной $ _SESSION до объявления session_start();
В моем случае я уже начал сеанс в файле header.php. Но я обращался к переменной $ _SESSION перед оператором include. Пример;
<?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();
Надеюсь, это поможет любому, кто наткнулся на ту же проблему. Хотя это происходит в поздний час.
$ _SESSION всегда существует независимо от того, запускаете ли вы session_start () или нет. Поэтому я думаю, что что-то другое должно вызывать вашу ошибку.
Не могли бы вы опубликовать код? Возможно, вы где-то отключили переменную (см. Эту ссылку ).