四十三、逐行阅读Yii2.0.43_Yii框架文件yii\web\Request.php(10)

一、getUserHost方法,返回用户主机名

    //返回用户主机名
    public function getUserHost()
    {
        $userIp = $this->getUserIpFromIpHeaders();
        if($userIp === null) {
            return $this->getRemoteHost();
        }
        return gethostbyaddr($userIp);
    }

二、getRemoteIp方法,返回客户端ip

    //返回客户端ip
    public function getRemoteIP()
    {
        return isset($_SERVER['REMOTE_ADDR']) ? 
            $_SERVER['REMOTE_ADDR'] : 
            null;
    }

三、getRemoteHost方法,返回客户端主机

    //客户端主机
    public function getRemoteHost()
    {
        return isset($_SERVER['REMOTE_HOST']) ? 
            $_SERVER['REMOTE_HOST'] : 
            null;
    }

四、getAuthUser方法,返回用户名

    // 用户名
    public function getAuthUser()
    {
        return $this->getAuthCredentials()[0];
    }

五、getAuthPassword方法,用户密码

    // 用户密码
    public function getAuthPassword()
    {
        return $this->getAuthCredentials()[1];
    }

六、getAuthCredentials方法,解析用户名和密码

    // 解析用户名和密码
    public function getAuthCredentials()
    {
        $username = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : null;
        $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;

        if ($username !== null || $password !== null) {
            return [$username, $password];
        }

        /**
         * Apache with php-cgi does not pass HTTP Basic authentication to PHP by default.
         * To make it work, add one of the following lines to to your .htaccess file:
         *
         * SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
         * --OR--
         * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
         */
        $auth_token = $this->getHeaders()->get('Authorization');

        if ($auth_token !== null && strncasecmp($auth_token, 'basic', 5) === 0) {
            $parts = array_map(function ($value) {
                return strlen($value) === 0 ? null : $value;
            }, explode(':', base64_decode(mb_substr($auth_token, 6)), 2));

            if (count($parts) < 2) {
                return [$parts[0], null];
            }

            return $parts;
        }

        return [null, null];
    }

总结:

 阅读了6个方法:

  • getUserHost方法,返回用户主机名
  • getRemoteIp方法,返回客户端ip
  • getRemoteHost方法,返回客户端主机
  • getAuthUser方法,返回用户名
  • getAuthPassword方法,用户密码
  • getAuthCredentials方法,解析用户名和密码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值