Идентификатор сеанса устанавливается даже после выхода из системы - PullRequest
0 голосов
/ 05 февраля 2019

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

Теперь, это моя главная страница:

   <?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>

<?php
  require 'dbConfigBDO.php';
  require 'message.php';
  require 'SafeRedirect.php';

  if (isset($_POST['username']) AND isset($_POST['pass']))
  {
     $_SESSION['message'] = '';
     $username = $_POST['username'];
     $password = $_POST['pass'];

     $response= $conn->prepare('SELECT username,pass
                FROM AdminTable
                WHERE username = :nom
              ');
      $response->bindValue(':nom',$username,PDO::PARAM_STR);
      $response->execute();
      $member = $response->Fetch();
      $response->CloseCursor();

     if(!$member) exit('اسم المستخدم غير صحيح');
     if($password !== $member['pass']) exit('كلمة المرور غير صحيحه');

     $_SESSION['id'] = $member['username'];
     $_SESSION['message'] = htmlspecialchars($user). ' تم تسجيل دخولك بنجاح  ';
     safe_redirect('index.php');
     exit;
  }
?>

<!-- Log in:
First read name and password:-->
<form action="" method="post" id="form">
    <fieldset class="form-item">
        <legend>الدّخول</legend>
        <label for="email">الاسم</label><input type="text" name="username" id="username"><br>
        <label for="pass">كلمة المرور</label><input type="password" name="pass" id="pass">
    </fieldset>
    <fieldset class="form-submit">
        <input type="submit" value="موافق">
    </fieldset>
</form>
</body>
</html>

проблема здеськогда я перенаправляю пользователя в index.php, который проверяет следующим образом:

<?php
session_start();
require 'message.php';
require 'SafeRedirect.php';
$_SESSION['message'] = '';
$session_id = (isset($_SESSION['id'])) ? $_SESSION['id'] : null;

if($session_id == null)
{
  $_SESSION['message'] = htmlspecialchars($user). ' Please sign in first... ';
   safe_redirect('login.php');
   exit;
}
?>
<a href="logout.php">
click here to log out</a>

Теперь, когда я нажимаю выход из системы, я не могу получить доступ к странице index.php, верно?проблема в том, что я все еще могу!Я попытался напечатать идентификатор сеанса, и он не меняется даже после выхода из системы.Я использовал

<?php
require 'SafeRedirect.php';
session_start();
unset($_SESSION["id"]);
session_regenerate_id(true);
session_destroy();
safe_redirect('login.php');
 ?>

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

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