IT技术博客大学习 共学习 共进步

用php根据ip获取地区的方法

web前端开发 2012-05-24 22:48:03 累计浏览 5,141 次
本机暂存

    在很多网站上看到一进来就会显示“欢迎来自XXXX地区的朋友”,这样一句句小小的欢迎,但是给人一种温暖的感觉。对于php来说没这样的功能,但是可以变通一下。先用php获取本机的ip,再用php的curl函数来获取用户的详细地区.下面来看一下代码;

set_time_limit(100);//设置程序运行时间。php默认是60秒。

/*
 * 这个函数是获取客户端和IP
 *
 *
 */
function GetIP()
{
 if(!empty($_SERVER["HTTP_CLIENT_IP"]))
 {
  $cip = $_SERVER["HTTP_CLIENT_IP"];
 }
 else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
 {
  $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
 }
 else if(!empty($_SERVER["REMOTE_ADDR"]))
 {
  $cip = $_SERVER["REMOTE_ADDR"];
 }
 else
 {
  $cip = '';
 }
 preg_match("/[\d\.]{7,15}/", $cip, $cips);
 $cip = isset($cips[0]) ? $cips[0] : 'unknown';
 unset($cips);
 return $cip;
}

    下面这个函数是用php的curl函数从网路上获取详细地区

function lazdf($ip){

$curl= curl_init();

curl_setopt($curl,CURLOPT_URL,"http://www.ip138.com/ips138.asp?ip=".$ip);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$ipdz=curl_exec($curl);
curl_close($curl);
preg_match("/<ul class=\"ul1\"><li>(.*?)<\/li>/i",$ipdz,$jgarray);
preg_match("/本站主数据:(.*)/i", $jgarray[1],$ipp);

return  "<div class=\"global_widht global_zj zj\" style=\"background: none repeat scroll 0% 0% rgb(226, 255, 191); font-size: 12px; color: rgb(85, 85, 85); height: 30px; line-height: 30px; border-bottom: 1px solid rgb(204, 204, 204); text-align: left;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎来自&nbsp;<b>".$ipp[1]."</b>&nbsp;的朋友!</div>";

}


echo lazdf(GetIP());//输出ip

    点击这里看一下效果吧:效果

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,181)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,081)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,340)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,063)
  5. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,722)
  6. 15个最好的免费开源电子商务平台 (累计阅读 12,461)
  7. Redis消息队列的若干实现方式 (累计阅读 12,001)
  8. 到底什么是MVC? (累计阅读 11,683)
  9. Rolling cURL: PHP并发最佳实践 (累计阅读 11,420)
  10. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,426)