Определите индекс в $ _SESSION с конкатенацией. (Точка) - PullRequest
1 голос
/ 08 марта 2012

Я получаю Уведомление PHP, если я установил индекс $ _SESSION без отправки. Хотите узнать, есть ли обходной путь?

Примечание:

Примечание по PHP: неопределенный индекс: bar

PHP

if($validation_condition) {
    $_SESSION['bar'] = 'foo';
}

Процесс проверки останавливает отправку формы, сохраняет данные формы в базе данных и перезагружает страницу. $ _SESSION ['bar'] отображает правильное значение, но я получаю Уведомление в журналах. Желая остановить Уведомление.

Вот var_dump ()

array(1) {
  ["bar"]=>
  string(3) "foo"
}

как вы можете видеть, что оно становится готовым.

Есть одно небольшое отличие от моего первоначального вопроса, я задаю его следующим образом

$_SESSION['bar'] .= 'foo';

С конкатенацией (точка). Когда я удалил его, уведомление ушло.

НАКЛОННАЯ ГОЛОВКА НА СТОЛБЕ!

Ответы [ 6 ]

4 голосов
/ 08 марта 2012

Один из подходов состоит в том, чтобы установить $_SESSION['bar'] в обоих условиях:

if ($validation_condition) {
    $_SESSION['bar'] = 'foo';
} else {
    $_SESSION['bar'] = '';
}

Кроме того, в своем коде дисплея вы можете сначала проверить наличие $_SESSION['bar']:

if (isset($_SESSION['bar'])) {
    echo $_SESSION['bar'];
}
2 голосов
/ 08 марта 2012
$_SESSION['bar'] = $validation_condition ? 'foo' : '';
1 голос
/ 09 марта 2012

Происходит следующее: ваш PHP-файл пытается получить сеанс.

Прежде всего, объявляйте в каждом месте, где вы будете использовать сеанс, следующее:

session_start();

Затем, согласно тому, что вы показываете в своем посте, вы можете сделать это в своем PHP-файле:

session_start();

if(isset($_SESSION['bar']){
   if ($validation_condition) {
       $_SESSION['bar'] = 'foo';
   } else {
      $_SESSION['bar'] = '';
   }
} else {
    $_SESSION['bar'] = '';
}

Это просто идея, но однажды я получил ту же ошибку, что и вы, и isset решают мою проблему.

1 голос
/ 08 марта 2012

Вы должны получить это уведомление только тогда, когда вы пытаетесь прочитать $_SESSION['bar'], и оно не существует, не пытаясь установить его. Убедитесь, что любой код, который читает значение, проверяет, что он существует первым.

1 голос
/ 08 марта 2012

Трудно сказать, что было задано в этом расплывчатом вопросе, но вот моя ставка

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if($validation_condition) {
        $_SESSION['bar'] = 'foo';
    }
}
1 голос
/ 08 марта 2012

Уведомление просто говорит о том, что массив $_SESSION не имеет индекса с именем 'bar'.Если вы не уверены, существует ли индекс, проверьте его:

if (isset($_SESSION['bar']))
  echo $_SESSION['bar'];
else
  echo 'something else';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...