增强对知识的记忆最笨得方法也是最好的办法就是做笔记,从今天开始记录我的php工作、学习笔记。

1、获取浏览者的ip地址及所在城市的代码

首先是获取浏览者的ip地址的函数

 
  
  1. function getRealIp() {  
  2.        if (!emptyempty($_SERVER['HTTP_CLIENT_IP'])) {  //check ip from share internet  
  3.          $ip=$_SERVER['HTTP_CLIENT_IP'];  
  4.        } elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) {  //to check ip is pass from proxy  
  5.          $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];  
  6.        } else {  
  7.          $ip=$_SERVER['REMOTE_ADDR'];  
  8.        }  
  9.        return $ip;  
  10.     } 

获取ip地址后,访问www.ip138.com的提供的一个api取得所在城市

 

 
  
  1. function ips($ip){  
  2.     $str=file_get_contents("http://www.ip138.com/ips.asp?ip={$ip}&action=2");  
  3.     preg_match("/<ul class=\"ul1\">(.*)<\/ul>/",$str,$m);  
  4.     $pstr=str_replace("</li>","",$m[1]);  
  5.     $arr=explode("<li>",$pstr);  
  6.     array_shift($arr);  
  7.     return $arr;  

 2、通过腾讯提供的api获取ip及所在城市(注意:只能获取服务器的地址,方法获取浏览者的信息有些遗憾)。

个人觉得这个函数非常好,可惜只呢获取服务器所在的信息。

 
  
  1.  
  2. function get_ip_place(){    
  3. $ip=file_get_contents("http://fw.qq.com/ipaddress");    
  4. $ip=str_replace('"',' ',$ip);    
  5. $ip2=explode("(",$ip);    
  6. $a=substr($ip2[1],0,-2);    
  7. $b=explode(",",$a);    
  8. return $b;    
  9. }    
  10. $ip=get_ip_place();    
  11. print_r($ip);    
  12.   

 基础知识补充:

$_SERVER['HTTP_CLIENT_IP']:获取代理的ip(有可能存在,可伪造)

$_SERVER['HTTP_X_FORWARDED_FOR']:用户是在哪个IP使用的代理(有可能存在,也可以伪造,什么的函数获取的真实ip地址就是用这个常用变量取得的)

$_SERVER['REMOTE_NAME']:访问端(有可能是用户,有可能是代理的)IP