繁体   English   中英

php function 验证令牌在 localhost 中有效,但在 GoDaddy 服务器上无效

[英]php function verify token works in localhost but not on GoDaddy server

我有 php function 应该验证是否有令牌,如果有,显示一些信息。 当我在本地主机中使用 xampp 时,function 工作正常。 当我在服务器上的 prod 中执行此操作时,它给了我一个“令牌未定义”错误,即使我可以在开发工具中看到该令牌。 什么可能导致错误? 我的 php function

    public function viewCompanies()
    {

        if (isset($GLOBALS['headers']['Authorization'])) {
            print_r($GLOBALS['headers']['Authorization']);

            if ($id = $this->VerifyUserToken($GLOBALS['headers']['Authorization'], $_SERVER['REMOTE_ADDR'])) {

                $companies = $this->currentModel->viewCompanies();

                if ($companies) {
                    echo json_encode($companies);

                } else {
                    echo json_encode(['success' => false]);
                }

            }
            else {
                echo json_encode(['success' => false, 'error' => "invalid token"]);
            }

        } else {
            echo json_encode(['success' => false, 'error' => "token undefined"]);
        }


    }

verifyUserToken function

public function verifyUserToken($token, $ip) {
        $db = new Database();

        $db->query('SELECT * FROM auth WHERE token = :token AND expiry >now()');

        $db->bind(':token', $token);
        //check database if token exists and is not expired
        if($res = $db->single()) {
            // checks if token matches to ip address
            // returns user or contact id if verified else returns false
            if($res->token === $token && $res->ip === $ip) {
                $this->cleanTokens();
                if($res->user_id >0) {
                    return $res->user_id;
                }
//              
            } else {
                return false;
            }
        } else {
            return false;
        }

    }

我检查了数据库,令牌显然在那里

我在 Postman 上测试了 function,我得到了相同的令牌未定义错误。 如果我应该添加任何其他信息,请告诉我。 我不知道如何调试这个。

到底。 是 goDaddy 拯救了这一天。 在我打开一张票并与他们交谈后,他们向我发送了以下消息:关于您看到的问题,即自定义 HTTP 标头被从您的站点上的请求中剥离出来,您遇到的问题实际上是由于 CGI处理程序 Apache 配置为默认在 cPanel 上使用。 出于安全原因,CGI 处理程序会删除未在 Apache 配置中显式注册的自定义 header 条目。 我们可以通过将站点使用的 PHP 处理程序从 CGI 更改为 PHP-FPM 来进一步验证这一点。 如果您...请随时通过电话或实时聊天联系我们的支持团队。

真挚地,

一切都很好,结局很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM