#php #mysql #сессия
Делаю авторизацию, возникла такая проблема. При нажатии на Logout , происходит редирект на login.php, т.е. на форму, но если в соседней вкладке зайти на home.php, то редирект не происходит и пользователь как бы остаётся в системе. Т.е. не происходит разрушение сессии. Вот код php: login.php location.href='home.php' "; } else { echo ""; } } ?> home.phpUntitled Document Welcome
Logout logout.php
Ответы
Ответ 1
Ну, я уже не помню всех тонкостей с сессиями, но в моем видении это так: при логине создаешь некий ключ в сессии, например: //login.php if (mysql_num_rows($query) != 0){ $row = mysql_fetch_assoc($query) $user_login = $row['username']; $_SESSION['user_login'] = $user_login;//присваиваем нашему ключу значение //В нашем случае, логин юзера if(isset($_GET['requested_url']){ header('Location: '.urldecode($_GET['requested_url'])); }//Если был задан запрашиваемый адрес, то автоматически перенаправляем его туда. } Потом, когда к тебе на страницу заходят, первым делом вызываешь скрипт, который проверяет сессию: //somepage.php if(!isset($_SESSION['user_login']){ header('Location: login.php?requested_url='.urlencode($_SERVER[REQUEST_URI]));//В идеале, передавая и адрес страницы, на которую изначально хотел зайти пользователь, чтобы потом сразу перенаправить его туда. } require_once('content.php'); //logout.php session_unset(); header('Location: login.php'); Сразу, просьба исключить комментарии про голый mysql вместо PDO и иже с ним, ответ ориентируется на достижение других целей.Ответ 2
Я использую сессии и авторизацию через $_SERVER, но может вам пригодится следующее: session_unset (); session_destroy (); $connection->close(); unset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_SERVER); header('HTTP/1.0 401 Unauthorized');Ответ 3
Попробуй использовать unset($_SESSION['login_user']); session_destroy() не желательно использовать Используй проверки if(isset($_SESSION['login_user'])) ...
Комментариев нет:
Отправить комментарий