【问题标题】:How can I make remember voting with cookies easier than this?我怎样才能比这更容易记住使用 cookie 投票?
【发布时间】:2012-03-09 02:25:54
【问题描述】:

用一个工作示例来描述我的问题是最简单的:即使您没有登录,YouTube 也会记住您看过的内容,并在下次根据之前观看的电影为您提供建议。

我的网站在某种程度上是相似的:用户无需登录即可对文章进行投票,并且该网站使用 cookie 记住投票。我已经找到了一种工作方法,但必须有一种更简单的方法——现在数据库的使用也没有得到优化。

对于每位访问者,都会检查他是否拥有 cookie。如果是,我质疑他的投票。如果不是,我创建一个虚拟用户,然后将 cookie 发送给他。现在我存储这个用户“last_visit”时间戳。在此之后,两个用户的一切都是一样的。我的问题是我的数据库被虚拟用户填满,所以我让我的 cookie 在 3 个月后过期,我的网站会定期检查哪些用户在过去 3 个月内没有访问我的网站,并将它们从数据库中删除。

我知道我把这件事复杂化了,但我的投票系统使用的是 AJAX,而且我找不到一种方法来发送 cookie(并创建虚拟用户),只有在投票发生而不是每次简单访问者浏览时我的网站 - 没有投票权。

另外请注意:我坚持使用 cookie - 我知道在投票发生时存储 IP 会更容易,但有些学校、企业使用相同的 IP,我希望允许他们的用户使用我的网站。

我在这里错过了什么?如何优化?

【问题讨论】:

    标签: php mysql ajax cookies voting


    【解决方案1】:

    如果他们没有永久帐户,为什么要在数据库中存储与他们相关的任何内容?只需在 cookie 中记录他们之前的投票。您还可以将平均投票存储在数据库中,但是是匿名的,并且根本不会将这些投票与“用户”相关联。

    【讨论】:

    • 我应该提到这一点:我的网站根据投票给出建议,例如:“谁对此投票也对这些投票”,所以我以某种方式连接了数据库中的投票。目前我为此使用用户(虚拟用户或真实用户)。
    • @ZTefter 知道了。有点棘手。您仍然可以通过随机散列或存储在 cookie 中的内容记录谁投票给什么。只需将哈希附加到投票记录,而不是实际创建用户记录。
    • 好的,谢谢,我想我会试试这个。但我仍然停留在 cookie 创建部分。投票是一个 javascript AJAX 函数,它调用一个带参数的 PHP 文件。所以理论上这个PHP应该创建cookie,那将是最好的,但我无法做到这一点。真的有可能吗?这是正确的方法吗?
    • @ZTefter 如果您使用 AJAX,您可能希望使用 javascript 创建哈希和 cookie,然后只需将信息发送到 PHP 进行保存。
    • 我想过这个问题,但我不想让每个人都能看到我的哈希是如何生成的(因为每个人都可以看到 JS 代码)——我发现它是一个安全漏洞。此外,当我生成哈希时,它必须是唯一的(以分隔选票),因此我必须进行数据库调用以查看是否存在相同的哈希,这需要 PHP。
    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2021-04-30
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多