我试图使用一个函数从数据库中返回一个简单的值,尽管这通常很容易,但我遇到了一些困难。我尝试了几种不同的混合方法,但均未成功,因此我决定向该社区寻求帮助。

这个概念是一种数据库结构,具有按页面类型分配的权限等级。

此示例的当前列: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

08-06 10:23