Определите, является ли пропущенная переменная сеанса ошибкой или нет (PHP) - PullRequest
0 голосов
/ 10 сентября 2011

В моем PHP-приложении я пытаюсь провести различие между случаями, когда неустановленная переменная сеанса связана с реальной ошибкой или с чем-то, что не является моей ошибкой (т. Е. Пользователь вышел из системы или набрал URL-адрес вручную).Очевидно, я хочу записывать только ошибки.Прямо сейчас я записываю ошибки для обоих, и я не могу сказать, какой именно.

Существуют ли общепринятые способы борьбы с подобными вещами?Мне любопытно услышать, как другие подошли к этой ситуации.

Спасибо, Брайан

1 Ответ

2 голосов
/ 10 сентября 2011

Установите все переменные сеанса на нормальные значения по умолчанию при создании сеанса.Если в какой-либо более поздний момент вы найдете неустановленную переменную сеанса, это ошибка.

Если пользователь выходит из системы, это не означает, что у него нет сеанса (или он должен неэто означает, что если ваша обработка сеанса похожа на большинство реализаций).То же самое касается ручного ввода URL.В какой-то момент внутренняя структура вашего приложения обязательно делает session_start() для всех просмотров страниц.Это хорошее место для ввода значений по умолчанию.

Ввод значений по умолчанию очень прост с оператором объединения массивов:

$defaults = array(
    'userid' => null,
    'lang'   => 'en',
);

session_start();
$_SESSION['userid'] = 42;
$_SESSION += $defaults; // will not overwrite existing values

print_r($_SESSION);

Смотрите это в действии (и, пожалуйста, игнорируйте предупреждения, связанные с невозможностью установить cookie сеанса и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...