我试图使用一个函数从数据库中返回一个简单的值,尽管这通常很容易,但我遇到了一些困难。我尝试了几种不同的混合方法,但均未成功,因此我决定向该社区寻求帮助。
这个概念是一种数据库结构,具有按页面类型分配的权限等级。
此示例的当前列:rank / modreports / plreports
数据示例:admin / 1/1
function CheckPermission($module){
$GetPerms = mysql_query("SELECT * FROM `permissions` WHERE `rank` = '".$MyDetails['group']."' LIMIT 1");
$MyPerm = mysql_fetch_array($GetPerms);
if($MyPerm[$module] != 1){
echo 'DEBUG: '.$MyPerm[$module];
//redirect("index.php?resp=perms");
die();
}
}
用法示例:
CheckPermissions(modreports);
上面的用法在这个阶段应该返回DEBUG:1或什么也不显示(最好是第二个),而不显示DEBUG:。 $ MyPerm ['modreports']将返回正确的值,因此我认为它是过去仅在$ _POST ['']中使用过的变量中的变量。
感谢您的帮助,我希望我提供了足够的信息以获取帮助。
响应协助,这是更正的代码;
function CheckPermission($module,$group){
$GetPerms = mysql_query("SELECT * FROM `permissions` WHERE `rank` = '".$group."' LIMIT 1");
$MyPerm = mysql_fetch_array($GetPerms);
if($MyPerm[$module] != 1){
redirect("index.php?resp=perms");
die();
}
}
最佳答案
您的函数不知道$ MyDetails或$ MyPerm。它仅知道您传递给它的变量(如对$ module所做的那样),或声明为全局变量的变量(不建议)。您曾经提到使用$ _POST,这是一个“超级全局”。这些是特殊情况,无需进一步定义即可用于所有功能。
推荐读物:http://www.php.net/manual/en/language.variables.scope.php