基于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的账户和密码。
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 "成功"."
";
//echo $_SERVER['REMOTE_ADDR']."
";
}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、我自己的博客做了一些优化。把代码放在了文本工具里面执行。如果你的文本工具不能执行代码。请移步:
我的博客代码:
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 "成功"."
";
//echo $_SERVER['REMOTE_ADDR']."
";
}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);
?>
博客总访问量:<?php echo $num;?> 人(IP数量) |
运行效果: