php检索会话变量以限制对页面的访问[重复]

Posted

技术标签:

【中文标题】php检索会话变量以限制对页面的访问[重复]【英文标题】:php retrieve session variable to restrict access to a page [duplicate] 【发布时间】:2019-02-25 17:03:52 【问题描述】:

我正在做一个股票管理网站,目前唯一的问题是页面限制,因此普通用户无法访问敏感的管理数据。

我已经做了这个测试代码:

    <?php 

    $perm = $_SESSION["perm_level"];

    if ($perm == 0) 
        $test = "Employee";
     elseif ($perm == 1) 
        $test = "Manager";
     elseif ($perm == 2) 
        $test = "Teacher";
     else 
        $test = "No value retrieved from session.";
    

    ?>

结果会打印到 admin.php 页面中,因此即使 $perm 和 $test 都回显了,我也只会得到 Employee 而没有 $perm。如何将会话变量正确分配给变量 $perm?

【问题讨论】:

您正确地分配了$perm,我很确定问题是没有设置$_SESSION['perm_level'],所以$permNULL,因此$perm == 0 测试总是返回true(因为NULL == 0)所以$test总是设置为“员工” 你有session_start()...吗?! 提示:如果由于某种原因打印出变量时没有显示任何内容,请使用 var_dump() php 函数打印变量内容,这将准确显示变量的类型及其值(如果有的话)。 JCoDog 是新用户。帮助他纠正而不是投反对票。 【参考方案1】:

整体思路一定是这样的

用户来登录 然后你必须开始会话

session_start();

然后必须设置$_SESSION["perm_level"] 值。如果它在数据库中,您可以关联用户名以找出pem_level

$_SESSION["perm_level"] = 'Value we get from DB';

只有在$_SESSION["perm_level"] 中有值之后,您才能执行您在问题中提到的 if else 语句。

您可以查看带有会话的简单登录示例,以了解其工作原理。

https://www.w3tweaks.com/php/simple-php-login-and-logout-script-using-php-session-and-database-using-mysql.html

【讨论】:

谢谢,在您的帮助下,我解决了我遇到的问题。【参考方案2】:

我想我解决了。会话在 header.php 中启动,因此 header.php 需要包含在 perm 检查器中。

【讨论】:

以上是关于php检索会话变量以限制对页面的访问[重复]的主要内容,如果未能解决你的问题,请参考以下文章

每当我重新加载页面时,仍会设置取消设置 PHP 会话变量 [重复]

如何使用 php 在不同页面中访问我的会话变量?

页面之间的会话变量丢失[重复]

页面位于 iFrame 中时未保存会话变量

php - 刷新页面后会话丢失[重复]

PHP 会话变量的安全性如何?