Как определить, истекло ли время сеанса PHP - PullRequest
2 голосов
/ 08 августа 2011

В настоящее время я тестирую переменные в $ _SESSION, и если isset() возвращает false, предположим, что для сеанса истекло время ожидания для отображения страницы входа.

session_start();

if (isset($_POST['login'])):
  // Process login credentials
  $_SESSION['account'] = Array('user'=>'username');
endif;

if (! isset($_SESSION['account'])):
  // User not logged in, show login page
else:
  // User is logged in, show account page
endif;

Однако недавно пользователь сообщил, что страница учетной записи пуста. Я предполагаю, что данные сеанса не были доступны, потому что мой код выше как-то ошибочен. Может ли кто-нибудь указать мне правильное направление, чтобы правильно проверить, истекло ли время сеанса в PHP?

1 Ответ

1 голос
/ 08 августа 2011

, если вы могли бы использовать:

if (! isset($_SESSION['account']) && !empty($_SESSION['account'])):
  // User not logged in, show login page
else:
  // User is logged in, show account page
endif;

так что 2 условия не пройдут,

  1. если сессия не установлена ​​

  2. если сессия установлена, но пуста!

все еще существует случай недопустимых значений, например, имя пользователя приходит к xyz, и у вас нет записей, соответствующих xyz, тогда это может быть случай извлечения записей, и поэтому он также может быть пустым!

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

И это должно охватывать большинство ваших дел, делая побеги меньше!

...