background image

    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>"; 
            });