1. php如果獲取IP地址
function getIP() {
if (@$_SERVER["HTTP_X_FORWARDED_FOR"])
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if (@$_SERVER["HTTP_CLIENT_IP"])
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if (@$_SERVER["REMOTE_ADDR"])
$ip = $_SERVER["REMOTE_ADDR"];
else if (@getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (@getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if (@getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "Unknown";
return $ip;
}
2. php如何獲取區域網內網的IP
這個跟你的路由設置和訪問方式有關。
假設你的服務端在10.10.50.1,公網IP都是8.8.8.8。
假設你的客戶端在 10.10.50.100-199,出口公網IP是4.4.4.4
如果你的客戶端以公網的形式訪問,如http://8.8.8.8/ip.php,則服務端獲得IP都是4.4.4.4。
反之以內網的形式訪問,如http://10.10.50.1/ip.php,獲得的IP就是10.10.50.1XX。
解決的辦法,要麼就是使用內網地址訪問,要麼使用設置一下路由,指定10.10.50.100-199訪問的話,不走公網,走10網段。
3. php獲取ip
$user_IP=$_SERVER["REMOTE_ADDR"];//獲取訪問者IP
$file_name=date('Y-m-d').'.txt'//以當前的日期建立txt文件
$file=fopen($file_name,"a+");//如果存在該文件就打開,如果不存在就創建
fwrite($file,$user_IP.'--'.date('Y-m-dH:i:s'));//將訪問者IP及當前時刻寫到文件最後
fclose($file);//關閉文件
//個人覺得txt文件不會很大所以一般無需一天一刪除,因為在txt里刪除一些行比起資料庫要麻煩一些。
4. 如何使用php獲取本機IP地址
function ip() {
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
}
以上函數取自phpcms的獲取ip方法
5. php 怎麼獲取記錄ip所在地
<?php
header('Content-Type:text/html;Charset=utf-8');
function GetIp(){
$realip = '';
$unknown = 'unknown';
if (isset($_SERVER)){
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown)){
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
foreach($arr as $ip){
$ip = trim($ip);
if ($ip != 'unknown'){
$realip = $ip;
break;
}
}
}else if(isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SERVER['HTTP_CLIENT_IP'], $unknown)){
$realip = $_SERVER['HTTP_CLIENT_IP'];
}else if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown)){
$realip = $_SERVER['REMOTE_ADDR'];
}else{
$realip = $unknown;
}
}else{
if(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), $unknown)){
$realip = getenv("HTTP_X_FORWARDED_FOR");
}else if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), $unknown)){
$realip = getenv("HTTP_CLIENT_IP");
}else if(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), $unknown)){
$realip = getenv("REMOTE_ADDR");
}else{
$realip = $unknown;
}
}
$realip = preg_match("/[\d\.]{7,15}/", $realip, $matches) ? $matches[0] : $unknown;
return $realip;
}
function GetIpLookup($ip = ''){
if(empty($ip)){
$ip = GetIp();
}
$res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip);
if(empty($res)){ return false; }
$jsonMatches = array();
preg_match('#\{.+?\}#', $res, $jsonMatches);
if(!isset($jsonMatches[0])){ return false; }
$json = json_decode($jsonMatches[0], true);
if(isset($json['ret']) && $json['ret'] == 1){
$json['ip'] = $ip;
unset($json['ret']);
}else{
return false;
}
return $json;
}
$ipInfos = GetIpLookup('123.125.114.144'); //.com IP地址
var_mp($ipInfos);
使用了新浪的開放API
6. php 怎麼通過ip來獲取所在位置
可以使用第三方介面 比如網路地圖 它可以通過ip來定位用戶的經緯度坐標 有了坐標就可以直接定位用戶所在城市和具體位置
7. PHP怎麼獲取當前電腦的IP
本文所述php實例可以完成獲取區域網所有用戶的電腦IP和主機名、及mac地址的功能,對於php程序設計人員有一定的參考借鑒價值。完整代碼如下:
<?php
$bIp = gethostbyname($_ENV['COMPUTERNAME']); //獲取本機的區域網IP
echo "本機IP:",$bIp,"\n";
echo "本機主機名:",gethostbyaddr($bIp),"\n\n\n"; //gethostbyaddr 函數可以根據區域網IP獲取主機名
//默認網關IP
list($ipd1,$ipd2,$ipd3) = explode('.',$bIp);
$mask = $ipd1 . "." . $ipd2 . "." . $ipd3 ;
exec('arp -a',$aIp); //獲取區域網中的其他IP
foreach( $aIp as $ipv) {
if(strpos($ipv,'介面') !== false) {//一下顯示的IP是否是當前區域網中的 而不是其他的類型 可以在cmd下試一下命令
$bool = false;
preg_match('/(?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/',$ipv,$arr);
if(strcmp($arr[0],$bIp) == 0) {
$bool = true;
}
} else {
if($bool) {
$str = preg_replace('/\s+/', '|', $ipv);
$sArr = explode('|',$str);
if($sArr[1] == 'Internet' || empty($sArr[1])) {
continue;
}
//去除默認網關
if(strcmp($mask . ".1", $sArr[1]) == 0) {
continue;
}
//去除同網關下255的IP
if(strcmp($mask . ".255", $sArr[1]) == 0) {
continue;
}
//去除組播IP
list($cIp) = explode('.', $sArr[1]);
if($cIp >= 224 && $cIp <= 239) {
continue;
}
echo "IP地址:|",$sArr[1],"|\n";
echo "MAC地址:",$sArr[2],"\n";
echo "主機名:",gethostbyaddr($sArr[1]),"\n";
echo "\n\n";
}
}
}
8. php 怎麼獲取內網IP
ip地址分 IPv4和IPV6兩個版本。
127.0.0.1或者192.168.0.1之類的,屬於IPV4的格式
127.0.0.1轉換為IPv6就是 ::1
IPv6具體的格式寫法,你搜索一下了解一下。
另外 ,服務端獲取ip地址,是相對的。比如你在區域網內建一個伺服器,在程序里獲取的ip地址,就是客戶端在區域網的ip ,一般是類似 192.168.0.101 之類的,大公司的話可能 10.x.x.x
區域網的ip地址,可以直接在網路適配器上看到
而在inter網,也就是大網路上,服務端獲取的ip地址,是你的連網設備獲取到的公網ip ,一般一個區域網內的主機,相對於網際網路上的伺服器,顯示的都是公網地址。
公網ip沒有在本機電腦上直接顯示。會顯示在路由或者連網設備上。也可以通過網路搜索 ip地址,會顯示你的公網ip
所以,假設一個區域網內,有兩台電腦同時訪問一個網上的伺服器,伺服器是沒辦法給兩台電腦區分開ip地址的,顯示的是一樣的。只是可能得到的設備信息不一樣(如:瀏覽器的useragent)
9. php中有沒有直接獲取本機IP地址的函數
function_get_client_ip(){
$ip=$_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_CLIENT_IP'])&&preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])ANDpreg_match_all('#d{1,3}.d{1,3}.d{1,3}.d{1,3}#s',$_SERVER['HTTP_X_FORWARDED_FOR'],$matches)){
foreach($matches[0]AS$xip){
if(!preg_match('#^(10|172.16|192.168).#',$xip)){
$ip=$xip;
break;
}
}
}
return$ip;
}
這是dz的,拿去,不謝!
10. php獲取客戶端IP地址的幾種方法
//php獲取ip的演算法
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip=$HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip=$HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif(getenv("HTTP_X_FORWARDED_FOR"))
{
$ip=getenv("HTTP_X_FORWARDED_FOR");
}
elseif(getenv("HTTP_CLIENT_IP"))
{
$ip=getenv("HTTP_CLIENT_IP");
}
elseif(getenv("REMOTE_ADDR"))
{
$ip=getenv("REMOTE_ADDR");
}
else
{
$ip="Unknown";
}
echo"你的IP:".$ip;
?>