【问题标题】:PHP - Authenticate with TWO session variablesPHP - 使用两个会话变量进行身份验证
【发布时间】:2020-03-11 04:58:07
【问题描述】:

我正在尝试验证客户的会员级别。我检查了两个会话变量;客户用户名及其成员级别。

我想要发生的事情:

  • 如果用户的会员级别与级别 3 不匹配,则他们将被引导回登录页面。

实际发生的情况:

  • 当我以不符合会员级别 3 的用户身份登录时,他们仍然可以看到内容。

(这两个变量都是在用户登录时设置的,我已经验证了两个会话变量都是字符串。)

这是我目前拥有的:

<?php 
  session_start(); 
    if (!isset($_SESSION['username']) && $_SESSION['level'] == "3") {
    $_SESSION['msg'] = "You have an incorrect membership level";
    header('location: ../auth/client_login.php');
  }
?>

我是否遗漏了一些简单的东西,或者这是检查两个会话变量的错误方法?提前感谢您的宝贵时间。

【问题讨论】:

  • 检查 $_SESSION['username'] 值或打印整个 print_r($_SESSION)。调试实际出了什么问题会很容易。
  • “使用两个会话变量进行身份验证” - 关于那个;您确实意识到 if (!isset($_SESSION['username']) 会检查它是否 not 设置,对吗?然而,想要同时检查这是否等于“3”$_SESSION['level'] == "3"。这两个条件似乎自相矛盾。
  • @FunkFortyNiner si 如果未设置用户名,请检查一端,然后检查级别是否为 3 如果您想分别测试这两个条件,我建议运行 or 条件或替换 !isset 到只是isset
  • @ShubhamAzad - 谢谢你的建议 - 这很有帮助
  • @nick_halden 不客气。

标签: php authentication session


【解决方案1】:

如果其他人偶然发现这篇文章,我发现了@FunkFortyNiner 在我最初的问题中发布的错误。我通过实施一个简单的修复来修复它:

if((isset ($_SESSION['username'])) &amp;&amp; ($_SESSION['level']!=3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2021-10-11
    • 2013-12-29
    • 2015-05-18
    • 2014-06-08
    • 2017-03-15
    相关资源
    最近更新 更多