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']
,所以$perm
是NULL
,因此$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检索会话变量以限制对页面的访问[重复]的主要内容,如果未能解决你的问题,请参考以下文章