Я работаю над аутентификацией страницы. Он может войти в систему уже, но я хочу, чтобы он выполнял аутентификацию пользователей на других страницах, а если кто-то пытается получить доступ к страницам через URL. Если человек не является зарегистрированным пользователем, перенаправьте его на страницу входа в систему. Я попробовал это, работая с сессиями, но это не сработает. Я следую структуре MVC Как-то сеансы никогда не отключаются. Я не знаю, почему ..Аутентификация пользователя Сессия устанавливается с начала
Вот как я сделал это
Мой LoginController
<?php
//LoginController
if($_POST)
{
if(isset($_POST['submit']) AND $_POST['submit'] == "login")
{
$username = $_POST['username'];
$password = $_POST['password'];
try
{
include '../model/Login.php';
$login = new Login($db, $username, $password);
if($login == TRUE)
{
session_start();
$_SESSION['username'] = $username;
header("Location:../index.php");
}
}
catch (Exception $exc)
{
echo $exc->getMessage();
}
}
}
Мой индекс контроллера (для главной страницы)
<?php
include 'model/Database.php';
session_start();
//Checks if the user is logged in.
if(!isset($_SESSION['username'])) {
//echo"<h2>You have no access to this page!";
include 'view/login.php';
die();
}
include 'c:/wamp/www/mvc/model/Display.php';
$displayPatients = new Display($db);
$dataDisplay = $displayPatients->getData();
include 'view/Main.php';
?>
мой logout.php : Когда пользователь нажимает на эту кнопку:
<?php
//Logout
//destroys the session when the user clicks logout
session_destroy();
header('Location:view/login.php'); //redirect to the login
Пользователь выходит из системы, перенаправляется на страницу входа, но сеанс по-прежнему установлен. Сессия устанавливаются с самого начала, и я понятия не имею, почему ..
Итак, вы имеете ввиду, что этого достаточно, если я поместил 'session_regenerate_id (true);' после 'session_start();'? Я попробовал, но это не сработало –
На второй взгляд ваша проблема может лежать в совершенно другом месте. Вы даже начали сеанс перед вызовом session_destroy(), потому что я не вижу этого в вашем скрипте logout.php? В противном случае вы не сможете уничтожить правильную сессию (или что-то в этом роде). –
Ой, спасибо, что он наконец-то работал! –