我有一个用户登录的网页,然后进入个人资料页面。但是,当用户按下后退按钮时;用户可以转到上一页。我想限制用户或..说我想将用户重定向到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();
}
答案 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(); ?>
在用户点击退出按钮并销毁所有会话之前,它将保护用户(已登录)访问未受保护的页面(包括登录页面)。