выведение пользователя полностью из веб-сайта

У меня есть сценарий PHP login и выхода из системы PHP login , и то, что я пытаюсь достичь, заключается в том, что когда пользователь нажимает на ссылку выхода из системы, он полностью выходит из системы, независимо от того, нажал кнопку «Назад» браузера и не хочет, чтобы пользователь получал доступ страница должна быть перенаправлена ​​на страницу login в login

это функция входа в систему

 function loggedin() { if ( isset($_SESSION['user_id']) && !empty($_SESSION['user_id']) ) { return true; } else{ return false; } } 

и это мой сценарий выхода

 <?php include 'includes/connect.php'; include 'includes/functions.php'; session_destroy(); header('location: index.php'); ?> 

как я могу это достичь ??

Solutions Collecting From Web of "выведение пользователя полностью из веб-сайта"

Вы можете удалить все файлы cookie

 if (isset($_SERVER['HTTP_COOKIE'])) { $cookies = explode(';', $_SERVER['HTTP_COOKIE']); foreach($cookies as $cookie) { $parts = explode('=', $cookie); $name = trim($parts[0]); setcookie($name, '', time()-1000); setcookie($name, '', time()-1000, '/'); } } 

http://www.php.net/manual/en/function.setcookie.php#73484

И если у вас есть массив имен файлов cookie, используемых для аутентификации входа, вы должны перебирать цикл только с ними.

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

Поскольку вы используете PHP $_SESSION для обработки пользовательских сеансов, вы можете, в частности, привязать текущие идентификаторы сеанса к учетным записям пользователей. Затем вы можете легко заставить сеанс истекать.

Например, создайте новое поле в пользовательской базе данных и вызовите его active_session_id или что-то еще. Каждый раз, когда пользователь входит в систему, сохраните вывод session_id() . Затем внутри вашей функции loggedin() проверьте, loggedin() ли session_id() текущего запроса с тем, который был сохранен при входе пользователя в систему, и если он не соответствует, функция вернет значение false, так что вы фактически завершаете пользовательский сеанс. Т.е., хотя он все равно будет на самом деле, он больше не будет действителен.

Стоит отметить, что вышеприведенное решение было бы своего рода one-to-one отношением, то есть один пользователь сможет иметь только один активный сеанс. Если вы хотите, чтобы пользователи приходили из разных мест одновременно, вам нужно поддерживать отношение « one-to-many », создавая новую таблицу, например, users_sessions и сохраняя там идентификаторы сеансов. Не создавайте другие поля в текущей таблице пользователей, такие как active_session_id_1 , active_session_id_2 и т. active_session_id_1 , active_session_id_2 что это не считается хорошей практикой.

Надеюсь это поможет

Вы можете написать общую функцию, которая проверяет, вошел ли пользователь в систему, если не просто перенаправляет их, как это

 function isLoggedIn(){ if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])){ //do what you want } else{ header("location:youloginpage.php"); } } 

Если вы не укажете больше о своем вопросе, мы можем обработать только по предположениям. Во всяком случае, поскольку вы используете эту СЕССИЮ, и неясно, хотите ли вы уничтожить содержащиеся данные или нет, функция для проверки входа пользователя в систему может быть изменена следующим образом:

 function loggedin() { if ( isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']) && ($_SESSION['user_id'] > 0) ) { return true; //user is logged in //other operations to be performed } else{ return false; //user is NOT logged in //other operations to be performed } } 

Функция выхода из системы может быть примерно такой:

 function logout() { if ( isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']) && ($_SESSION['user_id'] > 0) ) { $_SESSION['user_id'] = -1; //"unsets" the user, while not destroyng session } else{ return false; //user is already logged out - do nothing } }