如何在 PHP 登录功能中添加用户访问级别
P粉680000555
P粉680000555 2023-09-05 20:51:43
[PHP讨论组]

我开发了一个 PHP 登录/注册脚本,当用户登录时,它会启动一个会话并创建一个 cookie,然后使用以下命令将用户重定向到仪表板.php:

//get data in variables
    $emailAddress = mysqli_real_escape_string($conn,$_POST['emailAddress']);
    $password = mysqli_real_escape_string($conn,$_POST['password']);
    $remember = isset($_POST['rememberMe']);

    if(!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
         $error = 'Please enter a valid email address.';
    }
    elseif(email_exists($emailAddress,$conn)) { // if email address exists
        $result = mysqli_query($conn,"SELECT password FROM users WHERE email = '$emailAddress'");
        $retrievePassword = mysqli_fetch_assoc($result);
        if(!password_verify($password,$retrievePassword['password'])) // if password does not match
        {
            $error = 'Password is incorrect.';
        } else { // if password correct, log user in
            $_SESSION['email'] = $emailAddress;
            if($remember == 'on') { // if "keep user logged in" was ticked
                setcookie("email",$emailAddress,time()+7200); // keep user logged in for 2 hours
            }
            header("location: dashboard.php");
        }
    } else { // if email does not exist
        $error = 'Email address not registered.';
    }

在我所有受限页面(例如dashboard.php)的顶部,我有:

if(logged_in()) { // if user logged in, show page

logged_in() 函数是:

function logged_in(){
    if(isset($_SESSION['email']) || isset($_COOKIE['email'])) {
        return true;
    } else {
        return false;
    }
}

在数据库中,我有一个标题为 usrUserTypeNo 的列,其中管理员为“1”,普通用户为“3”。 如何将此用户类型合并到会话中,以便我可以根据用户的角色确定向用户显示哪些内容?

P粉680000555
P粉680000555

全部回复(1)
P粉041856955

不完全是。

如果您想要执行三种不同的操作之一(未登录操作、正常用户操作、管理员用户操作),那么您必须测试这些状态并为每种状态编写逻辑。

您可以将访问级别存储在会话中,而不是每次都从数据库请求它。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号