Уничтожение сессий в базе данных с помощью PHP - PullRequest
1 голос
/ 10 ноября 2009

Для веб-приложения я решил сохранить переменные сеансов в базе данных. Все работает так, как я хочу, за исключением выхода из системы, в котором я думал, что с помощью простой session_destroy () выполнит работу, но это не так.

Как я уже упоминал, вся информация о сеансе хранится в базе данных, но я замечаю, что при вызове session_destroy (); он удаляет сеанс из базы данных, но не удаляется с сервера. Я замечаю, что если я не закрываю браузер, каждый раз, когда я вхожу в систему, я получаю один и тот же идентификатор сессии, поэтому, если я вхожу в систему с другим именем пользователя, я все равно получаю один и тот же идентификатор сессии. Как я могу удалить сеанс сервера?

Это функция в классе, которую я использую для уничтожения сеанса:

 function destroy( $id ) {

  // Build query
  $newid = mysql_real_escape_string($id);
  $sql = "DELETE FROM sessions_table WHERE session_id = '{$newid}'";

  mysql_query($sql);

  return TRUE;

}

Любой совет, пожалуйста?

1 Ответ

1 голос
/ 10 ноября 2009

PHP-руководство

"session_destroy () уничтожает все данные, связанные с текущим сеансом. Он не отменяет какие-либо глобальные переменные, связанные с сеансом, или не удаляет cookie сеанса. Чтобы снова использовать переменные сеанса, session_start () должен быть названным.

Чтобы полностью завершить сеанс, например, выйти из системы, идентификатор сеанса также должен быть не установлен. Если файл cookie используется для распространения идентификатора сеанса (поведение по умолчанию), файл cookie сеанса должен быть удален. setcookie () может использоваться для этого. "

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