本文整理汇总了PHP中TYPO3\Flow\Http\Request::getServerParams方法的典型用法代码示例。如果您正苦于以下问题:PHP Request::getServerParams方法的具体用法?PHP Request::getServerParams怎么用?PHP Request::getServerParams使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TYPO3\Flow\Http\Request
的用法示例。
在下文中一共展示了Request::getServerParams方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getTrustedClientIpAddress
/**
* Get the most trusted client's IP address.
*
* This is the right-most address in the trusted client IP header, that is not a trusted proxy address.
* If all proxies are trusted, this is the left-most address in the header.
* If no proxies are trusted or no client IP header is trusted, this is the remote address of the machine
* directly connected to the server.
*
* @return string|bool The most trusted client's IP address or FALSE if no remote address can be found
*/
protected function getTrustedClientIpAddress(Request $request)
{
$server = $request->getServerParams();
if (!isset($server['REMOTE_ADDR'])) {
return false;
}
$ipAddress = $server['REMOTE_ADDR'];
$trustedIpHeaders = $this->getTrustedProxyHeaderValues(self::HEADER_CLIENT_IP, $request);
$trustedIpHeader = [];
while ($trustedIpHeaders->valid()) {
$trustedIpHeader = $trustedIpHeaders->current();
if ($trustedIpHeader === null || $this->settings['proxies'] === []) {
return $server['REMOTE_ADDR'];
}
$ipAddress = reset($trustedIpHeader);
if (filter_var($ipAddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_NO_PRIV_RANGE) !== false) {
break;
}
$trustedIpHeaders->next();
}
if ($this->settings['proxies'] === '*') {
return $ipAddress;
}
$ipAddress = false;
foreach (array_reverse($trustedIpHeader) as $headerIpAddress) {
$portPosition = strpos($headerIpAddress, ':');
$ipAddress = $portPosition !== false ? substr($headerIpAddress, 0, $portPosition) : $headerIpAddress;
if (!$this->ipIsTrustedProxy($ipAddress)) {
break;
}
}
return $ipAddress;
}