magento2 获取真实IP地址和浏览器/语言
// 浏览器、语言
$this->getLang(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4)) . '--' . $this->getUserAgent($_SERVER["HTTP_USER_AGENT"])
//真实ip地址
public function getRealIP() {
$headers = array ('HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'HTTP_VIA', 'HTTP_X_COMING_FROM', 'HTTP_COMING_FROM', 'HTTP_CLIENT_IP' );
foreach ( $headers as $header ) {
if (isset ( $_SERVER [$header] )) {
if (($pos = strpos ( $_SERVER [$header], ',' )) != false) {
$ip = substr ( $_SERVER [$header], 0, $pos );
} else {
$ip = $_SERVER [$header];
}
$ipnum = ip2long ( $ip );
if ($ipnum !== - 1 && $ipnum !== false && (long2ip ( $ipnum ) === $ip)) {
if (($ipnum - 184549375) && // Not in 10.0.0.0/8
($ipnum - 1407188993) && // Not in 172.16.0.0/12
($ipnum - 1062666241)) // Not in 192.168.0.0/16
if (($pos = strpos ( $_SERVER [$header], ',' )) != false) {
$ip = substr ( $_SERVER [$header], 0, $pos );
} else {
$ip = $_SERVER [$header];
}
return $ip;
}
}
}
return $_SERVER ['REMOTE_ADDR'];
}
/**
*方法二
* @return string
*/
public function getIpAdress()
{
$ipaddress = '';
if ($this->request->getServer('HTTP_CLIENT_IP')) {
$ipaddress = $this->request->getServer('HTTP_CLIENT_IP');
} else if ($this->request->getServer('HTTP_X_FORWARDED_FOR')) {
$ipaddress = $this->request->getServer('HTTP_X_FORWARDED_FOR');
} else if ($this->request->getServer('HTTP_X_FORWARDED')) {
$ipaddress = $this->request->getServer('HTTP_X_FORWARDED');
} else if ($this->request->getServer('HTTP_FORWARDED_FOR')) {
$ipaddress = $this->request->getServer('HTTP_FORWARDED_FOR');
} else if ($this->request->getServer('HTTP_FORWARDED')) {
$ipaddress = $this->request->getServer('HTTP_FORWARDED');
} else if ($this->request->getServer('REMOTE_ADDR')) {
$ipaddress = $this->request->getServer('REMOTE_ADDR');
} else {
$ipaddress = 'UNKNOWN';
}
return $ipaddress;
}
public function getUserAgent($agent) {
if(strpos($agent,"MSIE 8.0"))
return "Internet Explorer 8.0";
else if(strpos($agent,"MSIE 7.0"))
return "Internet Explorer 7.0";
else if(strpos($agent,"MSIE 6.0"))
return "Internet Explorer 6.0";
else if(strpos($agent,"Firefox/3"))
return "Firefox 3";
else if(strpos($agent,"Firefox/2"))
return "Firefox 2";
else if(strpos($agent,"Chrome"))
return "Google Chrome";
else if(strpos($agent,"Safari"))
return "Safari";
else if(strpos($agent,"Opera"))
return "Opera";
else return $agent;
}
public function getLang($lang) {
if (preg_match("/zh-c/i", $lang))
return "简体中文";
else if (preg_match("/zh/i", $lang))
return "繁體中文";
else if (preg_match("/en/i", $lang))
return "English";
else if (preg_match("/fr/i", $lang))
return "French";
else if (preg_match("/de/i", $lang))
return "German";
else if (preg_match("/jp/i", $lang))
return "Japanese";
else if (preg_match("/ko/i", $lang))
return "Korean";
else if (preg_match("/es/i", $lang))
return "Spanish";
else if (preg_match("/sv/i", $lang))
return "Swedish";
else return $lang;
}