2016-12-30 2 views
1

У меня проблема с моими сеансами. Кажется, что когда пользователь выходит из системы, все работает. Пользователь не может получить доступ к членству. Но дело в том, что кто-то напишет адрес в 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'; 
?> 
+0

Похож на проблему с кешем. Убедитесь, что вы не отправляете заголовки кэша с вашими php-страницами. –

ответ

0

Проблема решена! Мне просто нужно было добавить эту единственную строку кода после session_start();

ini_set("session.cache_limiter", "must-revalidate");