有时我们需要获知网页访问者的ip与访问时间,当然我们可以通过apache的access log查看,但是它记录了整个网站所有页面的访问记录,如果我们只想知道某一个页面或是某几个页面的访问记录就不是很方便了。我们可以通过一个php脚本来实现
<?php /*access_log.php*/
function real_ip()
{
static $realip = NULL;
if ($realip !== NULL)
{
return $realip;
}
if (isset($_SERVER))
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
foreach ($arr AS $ip)
{
$ip = trim($ip);
if ($ip != 'unknown')
{
$realip = $ip;
break;
}
}
}
elseif (isset($_SERVER['HTTP_CLIENT_IP']))
{
$realip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$realip = $_SERVER['REMOTE_ADDR'];
}
else
{
$realip = '0.0.0.0';
}
}
}
else
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$realip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$realip = getenv('HTTP_CLIENT_IP');
}
else
{
$realip = getenv('REMOTE_ADDR');
}
}
preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $realip;
}
date_default_timezone_set("PRC");
$date = getdate();
$date_str = $date["year"]."-".$date["mon"]."-".$date["mday"]."".$date["hours"].":"
.$date["minutes"].":".$date["seconds"];
$ip = real_ip();
$logitem = $ip."--------------------------[".$date_str."]";
if($fp = fopen("./log/access.log",'a'))
{
fwrite($fp,$logitem."\r\n");
}
?>下一步我们只需要在需要获取记录的网页前添加如下一段代码就可以了
<?php
include("./access_log.php");
?>不知咋的无法记录,望修改,最好生成php文件供下载。
原贴地址
http://bioinfo.ustc.edu.cn/seagven/?p=438