使用php跟踪页面上的唯一访问者

时间:2016-05-25 13:04:22

标签: php mysql cookies

我知道有很多方法可以做到这一点。 但我在考虑两种方法 -

第一 - 当用户访问页面时,创建一个cookie,当用户访问页面时,检查cookie是否已设置。

二 -

我想存储IP。但是假设如果网页上有10000次唯一访问,那么我需要创建一个表并将其存储在其中。

现在,如果我需要检查100页,那么我需要在100个表中存储10000条记录。 这看起来很复杂。

所以基本上我想问:

  1. 我可以在一张桌子中存储多少条目?
  2. 我的服务器上有多少桌子(比如Godaddy)?
  3. 我在我的网站上使用了很多数据库条目,所以如果网站上的并发用户太多,会产生一些问题吗?
  4. 那么在考虑了哪种方法更好的可能性后呢?

2 个答案:

答案 0 :(得分:0)

这是使用a neat little tool I wrote对客户端数据库执行此操作的一种不寻常方式。

这个想法是您将记录保存在客户端而不是在服务器上创建数据库。然后,如果需要,可以使用ajax将其发回服务器。

// Load up jSQL library && data
jSQL.load(function(){

    // Create a database if it doesn't exist
    if(undefined === jSQL.tables.visits){
        jSQL.createTable("visits", ['Page', 'ArrivedAt', 'StayedFor'], []);
    }

    // Get the loaded time
    var ArrivedAt = Date.now();

    // Insert a record before the page is unloaded
    window.onbeforeunload = function(){
        var Page = ""+window.location; // The page being loaded
        var StayedFor = Date.now() - ArrivedAt + "ms"; // How long was the user on the page?
        // Save the data to the database
        jSQL.tables.visits.insertRow({
            Page:Page, 
            ArrivedAt:ArrivedAt, 
            StayedFor:StayedFor
        });
        // Save the data to the database
        jSQL.persist();
    };

    // Has this person visited before?
    var returningVisitor = !!jSQL.tables.visits.data.length;
    if(!returningVisitor){
        document.getElementById('results').innerHTML = "No data yet, leave and come back";
    }else{
        // If the user has been here before, print a table to display records from the databsae
        var visitData = jSQL.query("SELECT * FROM visits").execute().fetchAll();
        document.getElementById('results').innerHTML = makeTable(visitData);
    } 
});

以下是一个工作示例:https://jsfiddle.net/bx2L5L93/

答案 1 :(得分:-1)

最好使用 Php Sessions ,因为它比Cookie更可靠,请点击此链接了解更多信息:

W3schools PHP 5 Sessions

1)没有最大存储空间,但取决于服务器存储容量。

2)我认为没有任何限制,但取决于您使用的计划。

3)如果您的代码有问题,否!

1),2),3)是各自编号问题的答案