Dieser Artikel stellt hauptsächlich PHP+Mysql+jQuery vor, um die aktuelle Anzahl der Online-Benutzer zu zählen. Ich hoffe, dass er für alle hilfreich ist.
HTML
Wir platzieren standardmäßig ein p#total auf der Seite, um die aktuelle Anzahl der Personen online anzuzeigen, und eine Liste #onlinelist, um die regionale Verteilung der Besucher anzuzeigen , wir sind in der Liste Platzieren Sie ein Bild mit Ladeanimation, und später verwenden wir jQuery, um die detaillierte Liste zu steuern, die angezeigt werden soll, wenn die Maus darüber gleitet.
<p class="demo"> <p id="total">当前在线:<span id="onlinenum"></span></p> <ul id="onlinelist"> <li><img src="loader.gif"></li> </ul> </p>
CSS
Um unser Beispiel nicht hässlich zu machen, verwenden wir CSS3. Es wird empfohlen, einen modernen Browser zu verwenden, um eine Vorschau des Effekts anzuzeigen.
.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
Wir müssen online eine Datentabelle vorbereiten, um die Besucher-IP, die Region und die Zugriffszeit aufzuzeichnen. Der gesamte Beispielstatistikprozess basiert auf dieser Tabelle, deren Struktur wie folgt ist:
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;
PHPonline.php wird zum Aufzeichnen von Besucherinformationen, einschließlich IP-Adresse und Region, verwendet. Überprüfen Sie zunächst, ob in der Datentabelle ein Besucher-IP-Datensatz vorhanden ist. Wenn ja, aktualisieren Sie nur die Zugriffszeit. Andernfalls erhalten Sie die Provinz und Region des Benutzers und fügen die IP des Benutzers, dh die Provinz und die Region, in die Tabelle ein. Hier können Sie feststellen, ob der Cookie-Datensatz des Besuchers vorhanden ist. Wenn er nicht vorhanden ist, können Sie die Sina-IP-Adressdatenbank anfordern, um die regionalen Informationen des Besuchers zu erhalten, und den Cookie-Wert und die Ablaufzeit festlegen. Abschließend löschen wir die abgelaufenen Datensätze in der Tabelle, zählen die Gesamtzahl der Datensätze und geben sie aus. Weitere Informationen finden Sie in den Codekommentaren.
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);// $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<$outtime"); //统计总记录数,即在线用户数 list($totalOnline) = mysql_fetch_array(mysql_query("select count(*) from online")); echo $totalOnline;//输出在线总数 mysql_close();
Die Funktion get_client_ip() wird verwendet, um die echte IP des Benutzers zu erhalten.
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 wird verwendet, um die Verteilung der Besucherzahlen in jeder Provinz (Region) zu zählen. Fragen Sie einfach die Datenbank ab und sortieren Sie sie nach Provinz. Beachten Sie, dass wir den endgültigen Datensatz in Form von JSON ausgeben, um die Front-End-Ajax-Interaktion zu erleichtern.
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
Was die Front-End-Seite tun muss, ist, beim Laden der Seite die Gesamtzahl der Besucher anzuzeigen, das heißt, Ajax zu verwenden, um online.php anzufordern. Wenn die Maus dann über den Statistikpfeil gleitet, wird geo.php über Ajax angefordert, um die Anzahl der Online-Personen in jeder Region und Provinz zu ermitteln, und der Effekt wird in einer Dropdown-Liste angezeigt.
$(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>"; }); $("#onlinelist").html(str); }); },function(){ $("#onlinelist").slideUp("fast"); }); });
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
Detaillierte Schritt-für-Schritt-Anleitung zur modularen PHP-Installation
PHP implementiert das offizielle WeChat-Konto, um automatisch Rot zu senden Umschlag-API
Detaillierte Erläuterung der Methoden und Beispiele für den PHP-Dateibetrieb
Das obige ist der detaillierte Inhalt vonPHP+Mysql+jQuery zählt die aktuelle Anzahl der Online-Benutzer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!