一、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方法,解析用户名和密码