Предотвращение пользователю прекращения доступа к другой странице пользователя в том же браузере на другой вкладке без входа в систему с помощью переменной сеанса PHP - PullRequest
0 голосов
/ 25 января 2019

Предположим, у меня есть страница входа, расположенная по адресу https://www.example.com/a/login.php. После успешного входа пользователь перенаправляет на https://www.example.com/a/admin.php. У меня есть другая страница входа, расположенная по адресу https://www.example.com/b/login.php, и после успешного входа пользователь перенаправляетна https://www.example.com/b/admin.php. Теперь предположим, что в браузере пользователь успешно заходит на https://www.example.com/a/login.php. и перенаправляет на страницу admin.php.Если другой пользователь пытается получить доступ к странице https://www.example.com/b/admin.php напрямую без страницы входа в систему в том же браузере на другой вкладке , он легко обходит логин и достигает страницы admin.php.Мой пример кода:

login.php

<?php
          session_start();
        // if user successful login 
        $_SESSION['user_id'] = $users_id 
        // we redirect user to member page
        if (isset($_SESSION['user_id']){
        header("Location:admin.php");
        }else{
        header("Location:login.php");
        }

   ?>

admin.php

    <?php
     session_start();
    if (!isset($_SESSION['user_id']){

        header("Location:login.php");
        }

    echo "welcom user : {$_SESSION['user_id']}";
    ?>

Есть лиТаким образом, если второй пользователь попытается получить доступ к https://www.example.com/b/admin.php, на другой вкладке того же браузера, он будет перенаправлен на https://www.example.com/b/login.php?

1 Ответ

0 голосов
/ 25 января 2019

Попробуйте установить другую переменную $_SESSION. Так вот так:

<?php
          session_start();
        // if user successful login 
        $_SESSION['user_id'] = $users_id 
        $_SESSION['url'] = "a"; // a if https://www.example.com/a/login.php, b if https://www.example.com/b/login.php
        // we redirect user to member page
        if (isset($_SESSION['user_id']){
        header("Location:admin.php");
        }else{
        header("Location:login.php");
        }

   ?>

А на вашем https://www.example.com/a/admin.php вы должны установить его так:

<?php
 session_start();
if (!isset($_SESSION['user_id'])){

    header("Location:login.php");
    }
elseif (!isset($_SESSION['url'])){

    header("Location:login.php");
    }
elseif ($_SESSION['url'] != "a"){

    header("Location:login.php");
    }

echo "welcome user : {$_SESSION['user_id']}";
?>

А затем на вашем https://www.example.com/b/admin.php вы должны установить его так:

<?php
 session_start();
if (!isset($_SESSION['user_id'])){

    header("Location:login.php");
    }
elseif (!isset($_SESSION['url'])){

    header("Location:login.php");
    }
elseif ($_SESSION['url'] != "b"){

    header("Location:login.php");
    }

echo "welcome user : {$_SESSION['user_id']}";
?>

Надеюсь, это поможет вам!

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