基于WordPress
的网站有很多统计功能。但是只能统计文章阅读数。不能统计访客人数。以下代码可以实现获取来访用户的IP地址
,一个IP
对应一次访问
。即使刷新也不会增加访问量。这个非常精确。
1、创建一个存储数据
的表。进入MySQL
后直接创建即可。
create table wp_jc_count(
id int not null auto_increment primary key,
ip varchar(20) not null,
times int default 0
);
2、创建一个php脚本
。复制到需要显示的地方即可。注意:里面需要修改MySQL
的账户和密码
。
<?php
class visitorInfo
{
//获取访客ip
public function getIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
//获取网站来源
public function getFromPage(){
return $_SERVER['HTTP_REFERER'];
}
}
$visitor =new visitorInfo();
//连接数据库
$conn=mysqli_connect("localhost","user_naem","password","db_name");
if($conn){
//echo "成功"."<br>";
//echo $_SERVER['REMOTE_ADDR']."<br>";
}else{
echo "失败\n";
die(mysqli_connect_error());
}
//设置数据库编码方式
mysqli_set_charset($conn,"utf8") or die(mysqli_connect_error());
//记录访客的ip地址
$address=$visitor->getIp();
//查询当前访客来访的次数的sql语句
$sql="select times from wp_jc_count where ip='$address'";
//查询结果存到$result变量
$result=mysqli_query($conn,$sql) or die(mysqli_connect_error());
if(!$row=$result->fetch_row()){
$sql="insert into wp_jc_count(ip, times) values('$address','1')";
}else{
$times=$row['0']+1;
$sql="update wp_jc_count set times='$times' where ip ='$address'";
}
$result=mysqli_query($conn,$sql) or die(mysqli_connect_error());
//获取总的访问人数即数据表中所有ip的数量
$sql="select count(ip) from wp_jc_count";
$result=mysqli_query($conn,$sql) or die(mysqli_connect_error());
if($row=$result->fetch_row()){
$num=$row[0];
}
echo "您是第".$num."位访客";
mysqli_close($conn);
?>
3、我自己的博客做了一些优化。把代码放在了文本工具
里面执行。如果你的文本工具不能执行代码。请移步:
我的博客代码:
<?php
class visitorInfo
{
//获取访客ip
public function getIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
//获取网站来源
public function getFromPage(){
return $_SERVER['HTTP_REFERER'];
}
}
$visitor =new visitorInfo();
//连接数据库
$conn=mysqli_connect("localhost","user_naem","password","db_name");
if($conn){
//echo "成功"."<br>";
//echo $_SERVER['REMOTE_ADDR']."<br>";
}else{
echo "失败\n";
die(mysqli_connect_error());
}
//设置数据库编码方式
mysqli_set_charset($conn,"utf8") or die(mysqli_connect_error());
//记录访客的ip地址
$address=$visitor->getIp();
//查询当前访客来访的次数的sql语句
$sql="select times from wp_jc_count where ip='$address'";
//查询结果存到$result变量
$result=mysqli_query($conn,$sql) or die(mysqli_connect_error());
if(!$row=$result->fetch_row()){
$sql="insert into wp_jc_count(ip, times) values('$address','1')";
}else{
$times=$row['0']+1;
$sql="update wp_jc_count set times='$times' where ip ='$address'";
}
$result=mysqli_query($conn,$sql) or die(mysqli_connect_error());
//获取总的访问人数即数据表中所有ip的数量
$sql="select count(ip) from wp_jc_count";
$result=mysqli_query($conn,$sql) or die(mysqli_connect_error());
if($row=$result->fetch_row()){
$num=$row[0];
}
mysqli_close($conn);
?>
<table>
<tr style="text-align:center;font-size:18px; font-family:黑体;">
<td style="width:100%;text-align:center;"> 博客总访问量:<a style="color:DodgerBlue;"><?php echo $num;?></a> 人(IP数量)</td>
</tr>
</table>
运行效果:

评论