У меня проблема с моими сеансами. Кажется, что когда пользователь выходит из системы, все работает. Пользователь не может получить доступ к членству. Но дело в том, что кто-то напишет адрес в URL-баре для страницы memberarea, они смогут получить к нему доступ, а также нажать на некоторые страницы только для членов.Сессия работает при нажатии на ссылку, но не при вводе ссылки в URL-адресе или нажатии кнопки «Назад» в браузере
Это как мой код выглядит для login.php
<?php
session_start();
if(isset($_SESSION['usr_id'])!="") {
header("Location: profileuser");
}
include_once 'Db.php';
//check if form is submitted
if (isset($_POST['login'])) {
$email = mysqli_real_escape_string($con, $_POST['email']);
$password = htmlentities(mysqli_real_escape_string($con, $_POST['password']));
$result = mysqli_query($con, "SELECT * FROM table WHERE email = '" . $email. "' and password = '" . md5($password) . "'");
if ($row = mysqli_fetch_array($result)) {
$_SESSION['usr_id'] = $row['id'];
$_SESSION['usr_name'] = $row['email'];
$_SESSION['usr_fname'] = $row['name'];
$_SESSION['usr_ename'] = $row['ename'];
$_SESSION['usr_vip'] = $row['vipoo'];
header("Location: profile");
} else {
$errormsg = "<script>alert('Wrong!')</script>";
}
}
?>
Вот как это выглядит для каждой страницы членства на самом верху.
<?php
session_start();
if(!isset($_SESSION["usr_id"])){
header("Location: index");
exit(); }
include_once 'Db.php';
?>
Похож на проблему с кешем. Убедитесь, что вы не отправляете заголовки кэша с вашими php-страницами. –