一定期間内にサイトにアクセスした人の数をカウントしたい ユーザーの訪問数を記録するには、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 + "
最後に、この例は jquery に依存しているため、最初に jquery ライブラリをページにロードすることを忘れないでください。現在のバージョンは jquery-1.9.1 です。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

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