PHP中的奇怪条件行为

时间:2018-01-01 16:05:34

标签: php if-statement

你好,我有以下代码:

$cleanToken = $token->cutToken($auth_header);

if($cleanToken)
{
    if($user->logout($cleanToken))
    {
        http_response_code(200);
    }
    else
    {
        http_response_code(401);
    }
    echo json_encode('true: ' . $cleanToken);
}
else
{
    echo json_encode('false' . $cleanToken);
    http_response_code(401);
}

cutToken函数返回字符串或false。上面的代码在控制台中给我错误

  

无法加载http://localhost/obiezaca/v2/api/auth/doLogout.php:预检的响应包含无效的HTTP状态代码401

我也没能看到任何回复。尽管我在前端安慰了它。 时,我从最后一行中删除了http_response_code(401);,错误停止显示代码似乎正常工作,我可以在我的控制台中看到true: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjIwIn0.EAEOBEDxweNnMB-iHCD5qFcn_VYKguHO8Vr3jImChhc响应。

所以要说清楚 - 当我在第一个条件代码的其他地方出现http_response_code(401);时不能正常工作并且给我错误。当我删除此行代码似乎工作时,它没有给我任何错误,我能够在控制台中看到真正的..token ..

这对我来说非常奇怪,因为它看起来像添加http_response_code正在改变$ cleanToken是否给出了真或假是不可能的......这里发生了什么?

cutToken函数是:

public function cutToken($auth_header)
{
    if (isset($auth_header))
    {
        $dirtyToken_trimmed = trim($auth_header);
        if (!empty($dirtyToken_trimmed))
        {
            if(preg_match('/Bearer\s(\S+)/', $dirtyToken_trimmed, $matches))
            {
                return $matches[1];
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

0 个答案:

没有答案