В настоящее время я работаю над сайтом, на котором есть вход (имя пользователя и пароль). Защита паролем осуществляется операционной системой на веб-сервере на уровне папок, называемой областью в ОС. Пока это нужно будет делать, пока мы не выясним правильную систему регистрации PHP.
Приведенный ниже код основан на предыдущем вопросе о переполнении стека.
Я использую 3 файла (см. Фрагменты кода внизу).
Процесс:
- Нажмите кнопку «Войти» на index.php
- Введите имя пользователя и пароль для доступа к файлу индекса аутентификации.
- Нажмите кнопку выхода из системы, которая ссылается на файл logout.php - он ДОЛЖЕН очистить кеш и вернуть пользователю индекс верхнего уровня.
Это не «уничтожает сеанс» в том смысле, что вас не просят повторно вводить пароль при появлении соответствующего запроса, что, по сути, и должно происходить.
Мои минимальные знания php оставляют меня здесь в тупике.
index.php (файл верхнего уровня с кнопкой входа в систему)
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test</title>
</head>
<body>
<a href="authenticate/index.php">Log In Btn</a>
</body>
</html>
authenticate / index.php (Эта папка защищена паролем - содержит индексный файл с кнопкой выхода из системы, который ссылается на файл logout.php)
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Log out</title>
</head>
<body>
<a href="logout.php">Log Out Btn</a>
</body>
</html>
Аутентифицировать / logout.php
<?php
session_start(); //to ensure you are using same session
session_destroy(); //destroy the session
header("location:/index.php"); //to redirect back to "index.php" after logging out
exit();
?>