3 回答

TA贡献1998条经验 获得超6个赞
当用户成功通过身份验证时,在 $_SESSION 中定义一个值,类似于
$_SESSION['authenticated'] = true;
然后,对于每个操作,检查该值是否已定义,如果未定义,则将用户重定向到登录页面:
if (isset($_SESSION['authenticated']) && $_SESSION['authenticated']) {
// do some stuff
} else {
// redirect to the login page
}
通常,在 $_SESSION 中您将存储用户 ID,但由于您希望能够使用 $_GET 值在用户之间切换,您可以只存储一个布尔值,以了解用户是否已通过身份验证。
另一方面(禁用后退按钮)有点困难,这样做不是最佳实践。我可以考虑两种方法:
对整个页面使用 iframe。所有导航都将在 iframe 内完成,后退按钮将返回到您之前的上一个脚本;
使用 AJAX 完成所有操作。不会对整个页面进行重新加载,只对代码片段进行重新加载;
当然,有很多解决方法可以做到这一点,或多或少取决于脚本逻辑。

TA贡献1784条经验 获得超2个赞
首先,您需要在会话中使用一些标识符来告诉您登录的是哪个用户 - 通常这将是用户 ID(在您的情况下是主键)。我将假设是这种情况,并且您已按照如下所示的方式设置它,$row['userID']验证后数据库的结果在哪里。
session_start();
$_SESSION['userID'] = $row['userID'];
让我们以 using 为例?id=4,您可以使用$_GET['id']. 然后你需要做的就是比较两者,看看你的dashboard.php.
session_start();
if (!isset($_SESSION['userID'])) {
// User is not logged in at all, send 401 header (or you can do something entirely else)
header("HTTP/1.1 401 Unauthorized");
exit;
} elseif ($_SESSION['userID'] != $_GET['id']) {
// User entered someone else's dashboard - redirect to his own dashboard
header("Location: ?id=".$_SESSION['userID']);
exit;
}
// If we're past these statements, the user is logged in and accessing his own dashboard
但是,您可能可以删除该?id=4部分,而只是使用$_SESSION['userID'](或您定义的任何内容)来获取用户数据,从而在您访问/dashboard.

TA贡献1802条经验 获得超4个赞
您需要在登录页面的身份验证步骤中更新 php
if(email verified && password correctly entered){
// add user related info to session
$_SESSION['userInfo'] = ['id' => 2, 'name' => 'Anunay']; //info can be retried from db
session_start();
//add redirect code to home.php or dashboard
}
在所有文件中,您需要添加的页面顶部 session_start()
现在您可以添加签入标题部分
if(isset($_SESSION) && !empty($_SESSION)){
//get id from session
//get name from session
//you can add text welcome Anunay etc
}
- 3 回答
- 0 关注
- 176 浏览
添加回答
举报