如何收集有关我网站访问者的信息?

时间:2010-08-10 16:14:49

标签: php javascript statistics

有没有办法存储:

  • 访问者的IP地址
  • 访问者访问我网站的时间
  • 他们访问了多少次

我知道有一种方法可以做到这一点没有 PHP,只需使用Javascript和一些文本文件。

我将如何在PHP中执行此操作?

5 个答案:

答案 0 :(得分:10)

这是一项非常简单的任务。

你可以借助php来做到这一点。您可以获得有关访问您网站的客户的许多类型的信息。您可以了解IP地址,日期,时间,操作系统,浏览器,该IP地址的isp以及更多内容。你将不得不使用php和mysql!

首先在mysql中创建一个表。

<强> create_table_track.php

<?php

$server = "localhost";
$username = "username";
$password = "password";
$database = "database name";

$connId = mysql_connect($server,$username,$password) or die("Cannot connect to server");
$selectDb = mysql_select_db($database,$connId) or die("Cannot connect to database"); 

$result = "CREATE TABLE track(
`id` int(6) NOT NULL auto_increment,
`tm` varchar(20) NOT NULL default '',
`ref` varchar(250) NOT NULL default '',
`agent` varchar(250) NOT NULL default '',
`ip` varchar(20) NOT NULL default '',
`ip_value` int(11) NOT NULL default '0',
`domain` varchar(20) NOT NULL default '',
`tracking_page_name` varchar(10) NOT NULL default '',
 UNIQUE KEY `id` (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 "; 

if (mysql_query($result))
{
 print "Success in TABLE creation!......";
} 
else 
{
die('MSSQL error: ' . mssql_get_last_message());
}


?>'

这是获取客户信息的第一部分。 该文件将在mysql数据库中创建一个名为“track”的表。 现在要在此表中存储信息,您必须创建另一个文件。

<强>使用example.php

<html>
<?php


// fill in your databasa data here!
$server = "localhost";
$username = "username";
$password = "password";
$database = "database name";

$connId = mysql_connect($server,$username,$password) or die("Cannot connect to server");
$selectDb = mysql_select_db($database,$connId) or die("Cannot connect to database");


$tracking_page_name="example";
$ref=$_SERVER['HTTP_REFERER'];
$agent=$_SERVER['HTTP_USER_AGENT'];
$ip=$_SERVER['REMOTE_ADDR'];
$host_name = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$strSQL = "INSERT INTO track(tm, ref, agent, ip, tracking_page_name, host_name)    VALUES(curdate(),'$ref','$agent','$ip','$tracking_page_name','$host_name')";
$test=mysql_query($strSQL);

?>
</html>

现在,上述文件将从客户端计算机中提取信息并将其存储在数据库中。

现在要显示存储在数据库中的信息,我们将使用以下文件---

显示track.php

<html>
<body>
<?php

$con = mysql_connect("localhost","user name","password");
mysql_select_db("database name", $con) or die( "Unable to select database");
$query="SELECT * FROM track";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
?>
<table border="1" cellspacing="2" cellpadding="2">
<tr>
<th><font face="Arial, Helvetica, sans-serif">id</font></th>
<th><font face="Arial, Helvetica, sans-serif">time</font></th>
<th><font face="Arial, Helvetica, sans-serif">http referer</font></th>
<th><font face="Arial, Helvetica, sans-serif">user agent</font></th>
<th><font face="Arial, Helvetica, sans-serif">ip address</font></th>
<th><font face="Arial, Helvetica, sans-serif">ip value</font></th>
<th><font face="Arial, Helvetica, sans-serif">domain</font></th>
<th><font face="Arial, Helvetica, sans-serif">tracking_page_name</font></th>
<th><font face="Arial, Helvetica, sans-serif">Host_name</font></th>
</tr>

<?php
$i=0;
while ($i < $num) {

$f1=mysql_result($result,$i,"id");
$f2=mysql_result($result,$i,"tm");
$f3=mysql_result($result,$i,"ref");
$f4=mysql_result($result,$i,"agent");
$f5=mysql_result($result,$i,"ip");
$f6=mysql_result($result,$i,"ip_value");
$f7=mysql_result($result,$i,"domain");
$f8=mysql_result($result,$i,"tracking_page_name");
$f9=mysql_result($result,$i,"host_name");
?>

<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f4; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f5; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f6; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f7; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f8; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f9; ?></font></td>
</tr>

<?php
$i++;
}
?>
</body>
</html>'

答案 1 :(得分:9)

使用纯javascript无法在客户端计算机上存储任何内容。它在沙盒环境中运行,不允许您执行此类任务。您可以向服务器端脚本发送AJAX请求,该脚本将执行保留数据的必要步骤。当然,另一种选择是使用Google Analytics之类的服务,它会通过在页面末尾添加一个简单的脚本来处理有关您网站访问的统计信息。

答案 2 :(得分:1)

正如他所说的没有PHP !! (只有文本文件)我更喜欢使用带有回调函数的jsonp和像ip-api.com或ipinfo.io这样的web服务

function fire() {
    var url = "http://ipinfo.io/json?callback=func";
    var script = document.createElement('script');
    script.src = url;
    script.async = true;
    document.getElementsByTagName('head')[0].appendChild(script);
}

function func(response) {
    alert(response.hostname); // for example hostname
}

document.onload = fire();

而不是response.hostname,您可以提醒服务返回的所有内容,如

{
  "ip": "178.165.128.3",
  "hostname": "178.165.128.3.wireless.dyn.drei.com",
  "city": null,
  "region": null,
  "country": "AT",
  "loc": "47.3333,13.3333",
  "org": "AS12635 Hutchison Drei Austria GmbH"
}

您可以通过

获得的时间
var d = new Date();
var n = d.getTime();

并计算访客来自我将存储在本地存储中的频率..

答案 3 :(得分:0)

如果要写入服务器上的文件,则需要进行某种服务器端处理。 如果你想要客户端存储,它是一个相对较新的功能(HTML5),但不允许直接访问文件系统。

答案 4 :(得分:0)

在PHP中,如果我理解你要做的事情,那么你想要完成的事情就很容易了。

要获取访问者IP地址,您只需使用$ _SERVER超全局,如下所示:

<?php $_SERVER['ip_address']; ?> 

然后,为了得到时间,你只需使用:

<?php time(); ?> 

现在,稍微复杂一点,他们访问了多少次。您需要将上述内容放入数据库中,例如MySQL的。

创建一个数据库模式,其中包含以下列:id,ipAddress,time和numOfVisits。 您需要在网页的开头有一些php逻辑来检查用户IP地址是否已经在数据库中,如果是,则增加numOfVisits列。您显然需要将time()的输出记录到时间列中。

从本质上讲,这就是你在PHP中所做的事情。 希望这有助于:)