当前位置:  编程技术>php
本页文章导读:
    ▪php记录访问者IP地址的代码      收集了一段php记录访问者IP地址的代码,供大家学习参考。 具体请参照代码中的注释。   代码如下: <?php  //文件名字  $filename = "ip.txt";   if (isset()($_SERVER['HTTP_CLIENT_IP']))   {   $clientip .........
    ▪有关php中的microtime相关知识的整理      有关PHP中的microtime相关知识的整理,有需要的朋友可以看看。 先来看一段代码:   代码如下: class runTime {     var $StartTime = 0;     var $StopTime = 0;     var $TimeSpent = 0;     function start(){ .........
    ▪php根据IP地址获取当前地理位置接口      以前在做一个产品时,用到IP地址信息,当时就下载一个IP纯真库,拿来解析。 现在完全可以更简单了,特别是对于我们做小网站的人来说。用现成的程序,省时省力。   代码如下: <?php .........

[1]php记录访问者IP地址的代码
    来源: 互联网  发布时间: 2013-12-24

收集了一段php记录访问者IP地址的代码,供大家学习参考。
具体请参照代码中的注释。
 

代码如下:
<?php
 //文件名字
 $filename = "ip.txt";
  if (isset()($_SERVER['HTTP_CLIENT_IP']))
  {
  $clientip = $_SERVER['HTTP_CLIENT_IP'];
  }elseif (isset($_SERVER['HTTP_X_FORWARD_FOR']))
  {
  $clientip = $_SERVER['HTTP_X_FORWARD_FOR'];
  }else
  {
  $clientip = $_SERVER['REMOTE_ADDR'];
  }
  //打开文件(文件不存在自动建立)
  if (!$fp = fopen($filename, "a+"))
  {
   echo "不能打开文件$";
  exit;
  }
 //写入的时候还判断是否已经有重复数据
 while(!feof($fp))
 {
  $line = fgets($fp);
  if($line == ($clientip."\n"))
  { 
   exit;  //有重复数据就退出;
  }
 }
 // 写入文件
  if(!fwrite($fp,$clientip."\n"))
  {
   echo "不能写入到文件$filename" ;
  exit;
  }
  //已经完成写入文件
  fclose($fp);
 ?>

    
[2]有关php中的microtime相关知识的整理
    来源: 互联网  发布时间: 2013-12-24

有关PHP中的microtime相关知识的整理,有需要的朋友可以看看。
先来看一段代码:
 

代码如下:

class runTime {
    var $StartTime = 0;
    var $StopTime = 0;
    var $TimeSpent = 0;

    function start(){
        $this->StartTime = microtime();
    }

    function stop(){
        $this->StopTime = microtime();
    }

    function spent() {
        if ($this->TimeSpent) {
            return $this->TimeSpent;
        } else {
            $StartMicro = substr($this->StartTime,0,10);
            $StartSecond = substr($this->StartTime,11,10);
            $StopMicro = substr($this->StopTime,0,10);
            $StopSecond = substr($this->StopTime,11,10);
            $start = floatval($StartMicro) + $StartSecond;
            $stop = floatval($StopMicro) + $StopSecond;
            $this->TimeSpent = $stop - $start;
            return round($this->TimeSpent,8);
        }
    } // end function
}

注解:

1、为什么说封装欠妥?
在使用过程中,我发现那几个类的属性,没必要作为var (public )形式出现,既然用了class,那么就遵照下面向对象的一些基本规则,这几个变量完全可以用private 访问控制。

2、microtime 用得不够好?
手册上关于microtime 的一些说明:

定义和用法
microtime() 函数返回当前 Unix 时间戳和微秒数。

如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。

在PHP5 以上版本,是可以接受参数true,这样就能直接返回浮点数,而且效率会比现在这样做高不少。
下面是网上找到的一段小代码,可以做参考:
 

代码如下:

<?php
function microtime_float3(){
    return microtime(true);
}

function microtime_float2(){
    if( PHP_VERSION > 5){
        return microtime(true);
    }else{
        list($usec, $sec) = explode()(" ", microtime());
        return ((float)$usec + (float)$sec);
    }
}

function microtime_float(){
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

function runtime($t1){
    return number_format((microtime_float() - $t1)*1000, 4).'ms';
}

$t1 = microtime_float();
for($i=0;$i<10000;$i++){
    microtime_float();
}
echo "microtime_float=====";
echo runtime($t1).'<br>';
$t1 = microtime(true);

for($i=0;$i<10000;$i++){
    microtime(true);
}
echo "microtime_true=====";
echo runtime($t1).'<br>';
$t1 = microtime(true);

for($i=0;$i<10000;$i++){
    microtime_float2();
}

echo "microtime_float2=====";
echo runtime($t1).'<br>';
$t1 = microtime(true);

for($i=0;$i<10000;$i++){
    microtime_float3();
}
echo "microtime_float3=====";
echo runtime($t1).'<br>';
?>

本机winxp运行结果:
microtime_float=====109.5631ms
microtime_true=====38.8160ms
microtime_float2=====52.7902ms
microtime_float3=====45.0699ms
Linux上运行结果:
microtime_float=====47.2510ms
microtime_true=====9.2051ms
microtime_float2=====16.3319ms
microtime_float3=====12.2800ms


    
[3]php根据IP地址获取当前地理位置接口
    来源: 互联网  发布时间: 2013-12-24

以前在做一个产品时,用到IP地址信息,当时就下载一个IP纯真库,拿来解析。
现在完全可以更简单了,特别是对于我们做小网站的人来说。用现成的程序,省时省力。
 

代码如下:
<?php
function address_baidu($ip) {
    $u = "";
    $address = file_get_contents(" http://open.baidu.com/ipsearch/s?wd={$ip}&tn=baiduip");
    preg_match('#来自:<b>(.+)</b>#Ui', $address, $m);
    return strval($m[1]);
}
function GetRemoteIp($default='127.0.0.1')
{
    $ip_string = $_SERVER['HTTP_CLIENT_IP'].','.$_SERVER['HTTP_X_FORWARDED_FOR'].','.$_SERVER['REMOTE_ADDR'];
    if ( preg_match ("/\d+\.\d+\.\d+\.\d+/", $ip_string, $matches) )
    {
        return $matches[0];
    }
    return $default;
}
$ip = GetRemoteIp();
$addr = address_baidu($ip);

还有其他方法:
腾讯新浪通过IP地址获取当前地理位置(省份)的接口

腾讯的接口是 ,返回数组 http://fw.qq.com/ipaddress 

返回值 var IPData = new Array("61.135.152.194","","北京市","");

 新浪的接口 : http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js
 多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.192.3.42

可以简单使用:
   

代码如下:
<html> 
    <head> 
    <script type=text/javascript src=http://fw.qq.com/ipaddress charset="gb2312"></script>
    <script type=text/javascript>     
    document.write(IPData.join(' '));     
    </script> 
    </head> 
    <body> 
    </body> 
    </html>

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
mysql iis7站长之家
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3