Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义变量_Php_Slim - Fatal编程技术网

Php 未定义变量

Php 未定义变量,php,slim,Php,Slim,我在slim framework v2中编写了一个用于身份验证的中间件 以下是教程: 认证: function authenticate(\Slim\Route $route) { $headers = getallheaders(); $response = array(); $app = \Slim\Slim::getInstance(); if (isset($headers['Authorization'])) { if(strpos($

我在slim framework v2中编写了一个用于身份验证的中间件

以下是教程:

认证:

function authenticate(\Slim\Route $route) {
    $headers = getallheaders();
    $response = array();
    $app = \Slim\Slim::getInstance();

    if (isset($headers['Authorization'])) {
        if(strpos($headers['Authorization'], '.') !== false) {
            $authorization = explode('.', $headers['Authorization']);
            $api_key = $authorization[0];
            $user_id = $authorization[1];

            $objUsers = new Users();
            if ($objUsers->isValidUser($user_id, $api_key) <= 0) {
                $response["error"] = true;
                $response["message"] = "Access Denied. Invalid Api key";
                echoResponse(401, $response);
                $app->stop();
            }
        } else {
            $response["error"] = true;
            $response["message"] = "Access Denied. Invalid Api key";
            echoResponse(401, $response);
            $app->stop();
        }
    } else {
        $response["error"] = true;
        $response["message"] = "Api key is misssing";
        echoResponse(400, $response);
        $app->stop();
    }
}

$authenticate2 = function (\Slim\Route $route, $role, $where) {
    $response["group_id"] = $route->getParam('group_id');
    $response["role"] = $role;
    $response["where"] = $where;

    echoResponse(200, $response);
};
函数身份验证(\Slim\Route$Route){
$headers=getallheaders();
$response=array();
$app=\Slim\Slim::getInstance();
如果(isset($headers['Authorization'])){
if(strpos($headers['Authorization'],'.')!==false){
$authorization=explode('.',$headers['authorization']);
$api_key=$authorization[0];
$user_id=$authorization[1];
$objUsers=新用户();
如果($objUsers->isValidUser($user_id,$api_key)stop();
}
}否则{
$response[“error”]=true;
$response[“message”]=“访问被拒绝。Api密钥无效”;
回声反应(401,$response);
$app->stop();
}
}否则{
$response[“error”]=true;
$response[“message”]=“Api密钥出错”;
回声响应(400美元响应);
$app->stop();
}
}
$authenticate2=函数(\Slim\Route$Route、$role、$where){
$response[“group_id”]=$route->getParam('group_id');
$response[“role”]=$role;
$response[“where”]=$where;
回声响应(200美元响应);
};
第一种身份验证方法运行良好。但第二种身份验证方法返回两个错误:

未定义变量:authenticate2

函数名必须是字符串

错误行:
$app->get('/cases/shared/group/:group\u id',authenticate',$authenticate2($app->router()->getCurrentRoute(),'member','group'),函数($group\u id)use($app){


如何将路由和参数一起发送到中间件?

确保
$authenticate2=function();
代码在
$app->get('/cases/shared/group/:group_id'),…
调用之前执行

function authenticate(\Slim\Route $route) {
    $headers = getallheaders();
    $response = array();
    $app = \Slim\Slim::getInstance();

    if (isset($headers['Authorization'])) {
        if(strpos($headers['Authorization'], '.') !== false) {
            $authorization = explode('.', $headers['Authorization']);
            $api_key = $authorization[0];
            $user_id = $authorization[1];

            $objUsers = new Users();
            if ($objUsers->isValidUser($user_id, $api_key) <= 0) {
                $response["error"] = true;
                $response["message"] = "Access Denied. Invalid Api key";
                echoResponse(401, $response);
                $app->stop();
            }
        } else {
            $response["error"] = true;
            $response["message"] = "Access Denied. Invalid Api key";
            echoResponse(401, $response);
            $app->stop();
        }
    } else {
        $response["error"] = true;
        $response["message"] = "Api key is misssing";
        echoResponse(400, $response);
        $app->stop();
    }
}

$authenticate2 = function (\Slim\Route $route, $role, $where) {
    $response["group_id"] = $route->getParam('group_id');
    $response["role"] = $role;
    $response["where"] = $where;

    echoResponse(200, $response);
};