首页 > 解决方案 > 如何在 Core PHP 中验证用户会话(在每个页面上)并限制用户重新加载页面或返回

问题描述

我在核心 PHP 中创建了一个带有登录和注销功能的页面。当我登录时,系统会启动一个会话并将我带到一个新页面,其中在 URL 中传递了一个唯一键,该键只是该特定用户的主键。但是,当此密钥发生变化时,用户帐户也很容易更改,无需任何身份验证。

例如:如果用户 A 使用自己的凭据登录系统,则他已成功登录。假设他的主键是 2。

因此,他被带到以下 URL:www.example.com/dashboard.php?id=2现在,假设用户 B 的主键为 4,如果用户 A 手动将 URL 的键更改www.example.com/dashboard.php?id=2www.example.com/dashboard.php?id=4,则会话更改为用户 B。因此,无法保持真实性。

系统应该像如果手动更改 URL 中的键,或者强制重新加载页面或按下返回按钮,则需要销毁会话。

标签: phphtml

解决方案


您需要在登录页面的身份验证步骤中更新 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
}

推荐阅读