如何检查链接是否已被点击?

时间:2011-02-15 22:41:57

标签: php hyperlink tracking

我正在开发一款PHP Jeopardy游戏,我需要一种方法来查看如何检查某个问题的链接是否已被点击并隐藏它。

我还需要一种方法来刷新游戏板以再次显示所有问题链接。

有人知道我该怎么做吗?

编辑:

我的游戏设置非常简单。用户无需注册。

您将看到一个危险的板,从mysql数据库中提取问题,使用get存储问题和答案(我不想发出多个sql请求)。当您单击问题类别(例如,类别1,$ 100)时,它将带您进入将在此页面上显示问题的页面,该页面是指向该板的链接以及指向答案的链接。在答案页面上只有答案和回到董事会页面的链接。 (对我来说有意义,如果没有,请告诉我)

3 个答案:

答案 0 :(得分:2)

您可以使用CSS获取访问过的链接。这是通过CSS中所谓的伪类完成的(关于伪classess here的更多信息)

因此,对于CSS,您可以执行以下操作:

a.jeopardyquestion:visited {display: none;}

然后如果你想显示所有问题:

$("a.jeopardyquestion").toggle(true); // to show them

<击>

大编辑:没有可靠的方法只使用CSS和带有伪类的JS来做到这一点。似乎他们将从浏览器中完全放弃对:visited 属性的支持。目前,Chrome完全忽略了以下内容的样式:已访问的链接,但颜色属性除外。即使这样,也无法嗅探颜色,因为镀铬位于并返回链接的颜色,而不应用:visited 规则。 Firefox仍支持:visited 伪类,但似乎很快就会删除。

因此,如果您想跟踪用户访问过的链接,您必须使用javascript + cookies的某种组合来跟踪访问过的链接,例如:

  1. 用户访问“信息中心”
  2. 点击链接
  3. 问题ID存储(附加)到cookie(例如:“5,12,22,45”);
  4. 用户返回页面
  5. 阅读Cookie并仅显示Cookie中没有的链接。
  6. 或者您可以使用某些AJAX向服务器提供有关已访问问题的信息。这样,您可以通过向用户发送他必须看到的问题并在服务器端执行所有检查来实现更高的安全性(以及防止作弊),例如:

    1. 用户选择问题
    2. 导航前的AJAX调用,或者只是在问题页面加载时将打开的问题放入会话中
    3. 用户返回问题页面
    4. 在生成问题页面时,请阅读会话并查看用户回答的问题,但不要显示这些问题。

答案 1 :(得分:0)

简单的解决方案可能是为每个链接提供一个唯一的ID,并使用javascript来隐藏它的客户端。您可以使用javascript让它们再次可见。

编辑: 使用会话与每个用户关联。他们不需要为此注册。

使用ajax点击问题更新屏幕上的问题。这将阻止您的用户在源中窥探以获得答案。将您的会话cookie中的哪些问题与某个问题相关联,并拒绝发送相同的问题。

答案 2 :(得分:0)

如果您的客户必须注册,您可以将他们的点击存储在数据库中,否则,您可以将点击存储在会话或cookie中。但这取决于你的申请。