if (getenv("HTTP_CLIENT_IP")&& strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else
if
(getenv("HTTP_X_FORWARDED_FOR")
&&
strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"),
"unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset ($_SERVER['REMOTE_ADDR']) &&
$_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return ($ip);
}
geo.php 用来统计各省份(区域)访客人数分布。通过查询数据库,并按省份分组排序
即可,注意我们将最终的数据集以
JSON 的形式输出,便于前端 ajax 交互。
代码如下
include_once('connect.php');//
连接数据库
//
查询区域统计
$sql = "select province,count(*) as total from online group by province order by total desc";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result)){
$list[] = array(
'province' => $row['province'],
'total' => $row['total']
);
}
echo json_encode($list);//以 json
格式输出
jQuery
前端页面需要做的是,页面加载时展示访客总数,即使用
ajax 请求 online.php 即可。然
后当鼠标滑向统计箭头时,通过
ajax 请求 geo.php 获取各区域省份的在线人数,并以下拉
的方式展现效果。
代码如下
$(function(){
$("#onlinenum").load("online.php");
$(".demo").hover(function(){
$("#onlinelist").slideDown("fast");
var str = '';
$.getJSON("geo.php",function(json){
$.each(json,function(index,array){
str = str + "<li><span>"+array['total']+"</span>"+array['province']+"</li>";
});