【发布时间】:2009-07-01 16:05:09
【问题描述】:
我正在使用 PHP in_array() 函数来验证(通过会话)用户是否可以访问特定页面。由于某种原因,它无法正常工作...
PHP 页面
session_start();
require_once('../scripts/functions.php');
$role_auth = @$_SESSION['role_auth'];
access($role_auth, array(0,1,2,3,4));
访问功能
function access($role_auth, $array){
if(!(in_array($role_auth, $array))){
header("Location: ../index.html");
}
}
如果我在函数中插入打印语句,我可以看到所有正确的值都被传递到函数中。问题是,如果在没有设置会话变量的情况下调用该函数,由于某种原因,它会被认为在数组中,并且它会进行身份验证。
有什么想法吗?
【问题讨论】:
-
提示,您可以使用
range(0,4)代替array(0,1,2,3,4)。 php.net/range -
安全检查的简要说明。确保在发送标头后调用 die() 或 exit(),因为脚本中的内容仍将被发送。