検索
ホームページphp教程php手册PHP+Mysql+jQuery は現在のオンライン ユーザー数をカウントします

一定期間内にサイトにアクセスした人の数をカウントしたい ユーザーの訪問数を記録するには、Cookie、セッション、テキスト、またはデータベースを使用できます。この記事では、PHP を Mysql および jQuery と組み合わせて使用​​し、オンライン人数と訪問者の地域分布をカウントする例を示します。

通常、訪問者が Web サイトにアクセスすると、ページにユーザーの Cookie 情報が記録されます。Cookie の有効期限が切れると、ユーザーはオフラインとみなされます。この記事では、PHP を使用して訪問者の IP を記録し、クライアント上の Cookie と有効期限を記録します。同時に、Sina IP アドレス インターフェイスを通じて訪問者の地理的位置を取得します (この例では、都道府県のみを記録します)。それを統計用に mysql テーブルに書き込むと、一定期間内の訪問者の総数や訪問者の地域分布も確認できます。

HTML

現在のオンライン人数を表示するページに div #total を配置し、訪問者の地域分布を表示するために使用するリスト #onlinelist をデフォルトで配置し、後で jQuery を使用してリストに読み込みを行います。マウスが詳細リストを表示する上でスライドするときの制御。

 
<div> 
      <div>当前在线:<span></span>
</div> 
    <ul> 
        <li><img  alt="PHP+Mysql+jQuery は現在のオンライン ユーザー数をカウントします" ></li> 
    </ul> 
</div> 

CSS

表示効果をレンダリングするために CSS を使用します。以下のコードでは、CSS3 を使用しています。そのため、効果をプレビューするには最新のブラウザーを使用することをお勧めします。

 
.demo{width:150px; margin:20px auto; font-size:14px} 
#total{padding:6px 10px; background:#090 url(arr.png) no-repeat right top; color:#fff;  
cursor:pointer; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;  
-moz-box-shadow:0 0 3px #ccc; -webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;} 
#onlinelist{background:#f7f7f7; border:1px solid #d3d3d3; display:none; -moz-border-radius:5px;  
-webkit-border-radius:5px; border-radius:5px; -moz-box-shadow:0 0 3px #ccc;  
-webkit-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;} 
#onlinelist li{height:20px; line-height:20px;padding:4px 6px;border-bottom:1px dotted #d9d9d9} 
#onlinelist li span{float:right} 
#onlinelist li:hover{background:#fff} 

MySQL

訪問者のIP、地域、アクセス時間を記録するためにオンラインでデータテーブルを準備する必要があります。サンプル統計プロセス全体はこのテーブルに依存しており、その構造は次のとおりです:

 
CREATE TABLE IF NOT EXISTS `online` ( 
  `id` int(11) NOT NULL AUTO_INCREMENT, 
  `ip` varchar(30) NOT NULL, 
  `province` varchar(64) NOT NULL, 
  `addtime` int(10) NOT NULL DEFAULT '0', 
  PRIMARY KEY (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 

PHP

online.php は、IP アドレスや地域などの訪問者情報を記録するために使用されます。まず、データ テーブルに訪問者 IP レコードがあるかどうかを確認し、存在する場合は、ユーザーの州と地域を取得し、ユーザーの IP、つまり州と地域をテーブルに挿入します。ここで、訪問者の Cookie レコードがあるかどうかを判断できます。存在しない場合は、Sina IP アドレス データベースから訪問者の地域情報を要求し、Cookie の値と有効期限を設定します。最後に、テーブル内の期限切れのレコードを削除し、レコードの総数をカウントして出力します。詳細はコードのコメントを参照してください。

 
include_once('connect.php'); //连接数据库 
 
$ip = get_client_ip(); //获取客户端IP 
$time = time(); 
//查询表中是否有ip为当前访客IP的记录 
$query = mysql_query("select id from online where ip='$ip'"); 
if(!mysql_num_rows($query)){//如果不存在访客IP 
    if($_COOKIE['geoData']){//如果存在cookie,则获取用户的区域 
        $province = $_COOKIE['geoData']; //区域(省份) 
    }else{ 
        $api = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip"; 
        $json = file_get_contents($api);//调用新浪IP地址库 
        $arr = json_decode($json,true);//解析json 
        $province = $arr['province'];//获取省份 
        setcookie('geoData',$province,$time+600); //设置cookie,设置过期时间为10分钟 
    } 
    //将访客信息插入到数据表中 
    mysql_query("insert into online (ip,province,addtime) values ('$ip','$province','$time')"); 
}else{//如果存在,则更新该用户访问时间 
    mysql_query("update online set addtime='$time' where ip='$ip'"); 
} 
//删除已过期的记录 
$outtime = $time-600; 
mysql_query("delete from online where addtime
<p>
新浪IPアドレスライブラリの呼び出しについて</p>
<p>
get_client_ip() 関数は、ユーザーの実際の IP を取得するために使用されます。 </p>
<pre class="brush:php;toolbar:false">
 
function get_client_ip() { 
    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 は、各州(地域)の訪問者数の分布をカウントするために使用されます。データベースにクエリを実行し、州ごとに並べ替えるだけで、フロントエンドの Ajax インタラクションを容易にするために、最終的なデータセットが JSON 形式で出力されることに注意してください。

 
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 + "
  • "+array['total']+""+array['province']+"
  • ";              });              $("#onlinelist").html(str);          });      },function(){          $("#onlinelist").slideUp("fast");      });  }); 

    最後に、この例は jquery に依存しているため、最初に jquery ライブラリをページにロードすることを忘れないでください。現在のバージョンは jquery-1.9.1 です。



    声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    WebStorm Mac版

    WebStorm Mac版

    便利なJavaScript開発ツール

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 最新バージョン

    AtomエディタMac版ダウンロード

    AtomエディタMac版ダウンロード

    最も人気のあるオープンソースエディター

    SublimeText3 英語版

    SublimeText3 英語版

    推奨: Win バージョン、コードプロンプトをサポート!

    SAP NetWeaver Server Adapter for Eclipse

    SAP NetWeaver Server Adapter for Eclipse

    Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。