如何防止用户在php登录后返回登录页面?

时间:2015-12-24 07:04:16

标签: php

我有一个用户登录的网页,然后进入个人资料页面。但是,当用户按下后退按钮时;用户可以转到上一页。我想限制用户或..说我想将用户重定向到index.php页面。我该怎么办?

目前,我正在检查必须的会话变量;如果用户具有会话变量,则用户将直接进入配置文件页面。但是,用户仍然可以在登录后返回登录页面。我怎么能避免它?

if(!isset($_SESSION['id'])){
    // do some action  
} else{

echo '<script language="javascript">';
echo 'location.href="index.php"';
echo '</script>';

unset($_SESSION['id']);
session_destroy();  
}

2 个答案:

答案 0 :(得分:1)

if(!isset($_SESSION['id'])) {
    //show login stuff
} else {
    //redirect back to an other page:
    header('location: index.php');
}

使用标题时(&#39;位置...您必须确保页面上没有显示输出。

答案 1 :(得分:1)

您可以使用类中的函数或方法进行简化(如果您有许多页面,则非常有用)。只需将它放在您认为需要的每个页面上。

 class Logins{

            public function NeedLogin() { 

            if (isset($_SESSION['id'] === false) {
            session_destroy();
            header('Location:/login');
            exit();     
            }

        }

    public function NeedLogout() { 

            if (isset($_SESSION['id'] === true) {
            header('Location:/user'); // or any main protected pages
            exit();     
            }

        }

}// class

$log = new Logins();

现在,对于每个需要登录的页面,您应该放在每页的第一行:

<?php $log->NeedLogin(); ?>

此方法将保护用户在未登录时访问受保护或安全页面,并按标题重定向到登录页面('Location:/ login');

对于每个普通(未受保护的)页面,您应该输入:

<?php $log->NeedLogout(); ?>

在用户点击退出按钮并销毁所有会话之前,它将保护用户(已登录)访问未受保护的页面(包括登录页面)。