微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php 怎么实现访客次数

PHP实现访客次数方法:1、创建两个数据库表;2、在要进行统计次数页面添加代码“$realip=getip();modifyipcount($realip);”即可。

本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。

PHP 怎么实现访客次数

PHP准确的实现页面访问统计次数

1、需要两个数据库

①、IP记录表

create table ip (ipid int(11) NOT NULL default '',ipdata varchar(16) NOT NULL default '',iptime varchar(30) NOT NULL default '', primary key(ipid));

注:ipdata为记录的访问者的ip,iptime为记录的该ip访问

②、统计次数统计

create table count (todayipcount int(11) NOT NULL default '',allipcount int(11) NOT NULL default '',day varchar(2) NOT NULL  default '');
insert into count (todayipcount,allipcount,day) values ('0','0','0');

2、实现方法

在你的要进行统计次数页面上放如下代码

$realip=getip();
modifyipcount($realip);

getip()函数代码为:

function getip()
{
        if (isset($_SERVER)) 
        {
                if (isset($_SERVER[HTTP_X_FORWARDED_FOR]) && strcasecmp($_SERVER[HTTP_X_FORWARDED_FOR], unkNown))//代理
                {
                        $realip = $_SERVER[HTTP_X_FORWARDED_FOR];
                } 
                elseif(isset($_SERVER[HTTP_CLIENT_IP]) && strcasecmp($_SERVER[HTTP_CLIENT_IP], unkNown))
                {
                        $realip = $_SERVER[HTTP_CLIENT_IP];
                } 
                elseif(isset($_SERVER[REMOTE_ADDR]) && strcasecmp($_SERVER[REMOTE_ADDR], unkNown))
                {
                        $realip = $_SERVER[REMOTE_ADDR];
                } 
                else
                {
                        $realip = 'unkNown';
                }
        } 
        else
        {
                if (getenv(HTTP_X_FORWARDED_FOR) && strcasecmp(getenv(HTTP_X_FORWARDED_FOR), unkNown))
                {
                        $realip = getenv(HTTP_X_FORWARDED_FOR);
                }
                elseif(getenv(HTTP_CLIENT_IP) && strcasecmp(getenv(HTTP_CLIENT_IP), unkNown))
                {
                        $realip = getenv(HTTP_CLIENT_IP);
                } 
                elseif(getenv(REMOTE_ADDR) && strcasecmp(getenv(REMOTE_ADDR), unkNown))
                {
                        $realip = getenv(REMOTE_ADDR);
                } 
                else
                {
                        $realip = 'unkNown';
                }
        } 
        return $realip;
}

注:此函数代码网上到处都有

modifyipcount()函数代码为:

function modifyipcount($ip)
{
        <-----------------------数据库的连接省略------------------------->
        $query=SELECT * FROM ip where ipdata='.$ip.';
        $result=MysqL_query($query);
        $row=MysqL_fetch_array($result);
        $iptime=time();
        $day=date('j');
        if(!$row)
        {
                $query=INSERT INTO ip (ipdata,iptime) VALUES ('.$ip.','.$iptime.');
                MysqL_query($query);
                $query=SELECT day,todayipcount,allipcount FROM count;
                $result=MysqL_query($query);
                $row=MysqL_fetch_array($result);
                $allipcount=$row['allipcount']+1;
                $todayipcount=$row['todayipcount']+1;
                if($day==$row['day'])
                {
                        $query=UPDATE count SET allipcount='.$allipcount.',todayipcount='.$todayipcount.';
                }
                else
                {
                        $query=UPDATE count SET allipcount='.$allipcount.',day='.$day.',todayipcount='1';
                }
                 MysqL_query($query);
        }
        else
        {
                $query=SELECT iptime FROM ip WHERE ipdata='.$ip.';
                $result=MysqL_query($query);
                $row=MysqL_fetch_array($result);
                $query=SELECT day,todayipcount,allipcount FROM count;
                $result=MysqL_query($query);
                $row1=MysqL_fetch_array($result);
                if($iptime-$row['iptime']>86400)
                {
                                                $query=UPDATE ip SET iptime='.$iptime.' WHERE ipdata='.$ip.';
                 MysqL_query($query);
                        $allipcount=$row1['allipcount']+1;
                        if($day==$row1['day'])
                        {
                                $query=UPDATE count SET allipcount='.$allipcount.';
                        }
                        else
                        {
                                $query=UPDATE count SET allipcount='.$allipcount.',day='.$day.',todayipcount='1';
                        }
                         MysqL_query($query);
                }
                if($day!=$row1['day'])
                {
                        $query=UPDATE count SET day='.$day.',todayipcount='1';
                         MysqL_query($query);
                }        
        }
}

注:这里我设置24小时内访问统计次数只加1

这样我们调用数据库表count中的todayipcount和allipcount就可以得到今日访问IP和总访问IP,个人觉得是很准确的,欢迎大家有不同意见提出。

推荐学习:《PHP教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐