我如何计算我网站的唯一身份访问者? [英] How do I count unique visitors to my site?
问题描述
我正在为用户帖子制作访客计数系统,以显示主页上查看次数最多的帖子.我现在有一个访客计数系统,但它在每次页面刷新时都会注册一个视图.我无法使用 Google Analytics.
我需要的是一个访客计数器,它只计算独立访客.就我而言,唯一意味着一个人一天只能查看一个帖子?我想,即使是一周也可能奏效.你能在这里写那个php代码吗?如果你也喜欢,你也可以给我一些好的教程的链接.
这是代码需要做的(或等效的):
- 页面加载后,检查访问者是新访问者还是旧访问者(我不知道该怎么做..)
- 如果他老了,忽略他
- 如果他是新手,在mysql中,views = views + 1
这是一个不错的教程,正是您所需要的.(来源:coursesweb.net/php-mysql)>
注册并显示在线用户和访问者
使用 MySQL 表计算在线用户和访问者
在本教程中,您可以学习如何注册、统计并在您的网页中显示在线用户和访问者的数量.原理是这样的:每个用户/访问者都注册在一个文本文件或数据库中.每次访问网站的页面时,php 脚本都会删除所有超过一定时间(例如 2 分钟)的记录,添加当前用户/访问者并取剩余的记录数显示.
您可以将在线用户和访问者存储在服务器上的文件中,或存储在 MySQL 表中.在这种情况下,我认为使用文本文件添加和读取记录比将它们存储到需要更多请求的 MySQL 表中更快.
首先介绍在服务器上的文本文件中记录的方法,而不是使用 MySQL 表的方法.
要下载包含本教程中提供的脚本的文件,请单击 ->统计在线用户和访问者.
• 两个脚本都可以包含在.php"中;文件 (with include()
),或在.html"中;files (with ),正如您在本页底部提供的示例中所见;但服务器必须运行 PHP.
将在线用户和访问者存储在文本文件中
要使用 PHP 在服务器上的文件中添加记录,您必须为该文件设置 CHMOD 0766(或 CHMOD 0777)权限,以便 PHP 可以在其中写入数据.
- 在您的服务器上创建一个文本文件(例如,名为
userson.txt
)并授予它CHMOD 0777
权限(在您的 FTP 应用程序中,右键单击该文件,选择 Properties,然后选择Read
、Write
和Execute
选项). - 创建一个包含以下代码的 PHP 文件(名为
usersontxt.php
),然后将此 php 文件复制到userson.txt
所在的目录中.
usersontxt.php
的代码;
0){for($i=0; $i<$nrrows; $i++) {//获取每一行并将用户/visitor 和时间戳分开$ar_line = expand($sep, $ar_rows[$i]);//在 $addrow 数组中添加过去 $timeon 秒的记录if($ar_line[0]!=$uvon && (intval($ar_line[1])+$timeon)>=time()) {$addrow[] = $ar_rows[$i];}}}}$nruvon = count($addrow);//总在线$usron = '';//存储登录用户名//遍历 $addrow 获取访问者和用户数for($i=0; $i<$nruvon; $i++) {if(preg_match($rgxvst, $addrow[$i])) $nrvst++;//增加访问者别的 {//获取并存储用户名$ar_usron = 爆炸($sep,$addrow[$i]);$usron .= '<br/>- <i>'.$ar_usron[0].'</i>';}}$nrusr = $nruvon - $nrvst;//获取用户(总 - 访问者)//带有要显示数据的 HTML 代码$reout = '在线:'.$nruvon.'</h4>访问者:'.$nrvst.'<br/>用户:'.$nrusr.$用户.'</div>';//在 $filetxt 中写入数据if(!file_put_contents($filetxt, implode("\n", $addrow))) $reout = '错误:录音文件不存在,或不可写';//如果从<script>访问,使用GET 'uvon=showon',将返回的字符串添加到JS语句中//这样脚本也可以包含在 .html 文件中if(isset($_GET['uvon']) && $_GET['uvon']=='showon') $reout = "document.write('$reout');";回声 $reout;//输出/显示结果?>
- 如果您想将上述脚本包含在.php"中文件,在要显示在线用户和访问者数量的地方添加以下代码:
4.在.html"中显示在线访问者/用户的数量文件,使用此代码:
此脚本(以及下面介绍的另一个)与 $_SESSION 一起使用.在您使用它的 PHP 文件的开头,您必须添加: session_start();.使用 MySQL 表计算在线用户和访问者
要在一个 MySQL 表中注册、统计和显示在线访问者和用户的数量,需要执行三个 SQL 查询:删除超过特定时间的记录.插入包含新用户/visitor 的行,或者,如果已插入,请更新其列中的时间戳.选择剩余的行.这是使用 MySQL 表(名为userson")存储和显示在线用户和访问者的脚本的代码.
- 首先我们创建userson"表,有 2 列(uvon,dt).在uvon"中列存储用户名(如果已登录)或访问者的 IP.在dt"中访问页面时,列中存储了一个带有时间戳(Unix 时间)的数字.
- 在 php 文件中添加以下代码(例如,名为create_userson.php"):
create_userson.php
的代码:
query($sql) === TRUE) echo 'Table "userson";成功创建';否则回显'错误:'.$conn->错误;$conn->close();?>
- 现在我们创建在
userson
表中插入、删除和选择数据的脚本(有关代码的解释,请参阅脚本中的注释).
- 将以下代码添加到另一个 php 文件(名为
usersmysql.php
)中:在这两个文件中,您必须在变量中添加用于连接 MySQL 数据库的个人数据:$host
、$user
、$pass
和$dbname
.
usersmysql.php的代码:
query($sqldel)) echo '错误:'.$conn->错误;if(!$conn->query($sqliu)) echo '错误:'.$conn->错误;$result = $conn->query($sqlsel);//如果 $result 至少包含一行如果($result->num_rows>0){//遍历结果集,设置在线访问者和用户数($nrvst, $nrusr)while($row = $result->fetch_assoc()) {if(preg_match($rgxvst, $row['uvon'])) $nrvst++;//增加访问者别的 {$nrusr++;//增加用户$usron .= '<br/>- <i>'.$row['uvon'].'</i>';//存储用户名}}}$conn->close();//关闭MySQL连接//带有要显示数据的 HTML 代码$reout = '在线:'.($nrusr+$nrvst).'</h4>访问者:'.$nrvst.'<br/>用户:'.$nrusr.$用户.'</div>';//如果从<script>访问,使用GET 'uvon=showon',将返回的字符串添加到JS语句中//这样脚本也可以包含在 .html 文件中if(isset($_GET['uvon']) && $_GET['uvon']=='showon') $reout = "document.write('$reout');";回声 $reout;//输出/显示结果?>
在服务器上创建这两个 php 文件后,运行create_userson.php"在您的浏览器上创建用户"表.
在要显示在线用户和访问者数量的 php 文件中包含 usersmysql.php
文件.
或者,如果您想将其插入到.html"中文件,添加以下代码:
使用这些脚本的示例
• 在 php 文件中包含usersontxt.php":
反制在线用户和访客• 包括usersmysql.php"在 html 文件中:
<头><meta charset="utf-8";/><title>计数器在线用户和访问者</title><元名称=描述"content="PHP 脚本来统计和显示在线用户和访问者的数量";/><元名称=关键字"内容=在线用户,在线访问者"/>头部><身体><!-- 包括脚本(usersontxt.php"或usersmysql.php")--><script type="text/javascript";src=usersmysql.php?uvon=showon"></script>