php - 如何在 Core PHP 中验证用户会话(在每个页面上)并限制用户重新加载页面或返回
问题描述
我在核心 PHP 中创建了一个带有登录和注销功能的页面。当我登录时,系统会启动一个会话并将我带到一个新页面,其中在 URL 中传递了一个唯一键,该键只是该特定用户的主键。但是,当此密钥发生变化时,用户帐户也很容易更改,无需任何身份验证。
例如:如果用户 A 使用自己的凭据登录系统,则他已成功登录。假设他的主键是 2。
因此,他被带到以下 URL:www.example.com/dashboard.php?id=2
现在,假设用户 B 的主键为 4,如果用户 A 手动将 URL 的键更改www.example.com/dashboard.php?id=2
为www.example.com/dashboard.php?id=4
,则会话更改为用户 B。因此,无法保持真实性。
系统应该像如果手动更改 URL 中的键,或者强制重新加载页面或按下返回按钮,则需要销毁会话。
解决方案
您需要在登录页面的身份验证步骤中更新 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
}
推荐阅读
- arrays - 将 ArrayFormula 与查询或过滤器一起使用
- android - 使用 Volley 使用 StringRequest 时出现 AuthFailure 错误
- c# - 创建一个包含常见元素和重复计数的列表
- wordpress - 修改/自定义 wordpress 古腾堡块的设计
- reactjs - 反应 useSocket undefined is not iterable 错误
- android - 如何在android中创建自定义形状
- javascript - 过滤数组以获取值之间的特定结果
- r - 如何摆脱 R 中被拒绝的许可?
- html - 循环:在 R 中具有不同的行号
- javascript - 我试图在php中将相同的值从页面移动到另一个