php唯一用户标识,如何在PHP中存储cookie以唯一标识用户投票而无需登录

上下文

我在我的网站上有一个辩论系统,用户可以点击他们想要投票的辩论选项,然后就会显示两个选项的辩论票数。 但是,用户需要登录他们的帐户,这样才能起作用,所以只是路过的用户是无法投票的(你可以在这里查看功能性)。 我希望改变这个代码,使用户可以投票辩论而不登录他们的帐户。 我知道大多数选项都不是完全可靠的,也是可以解决的,所以我决定使用cookie来存储信息,这些信息可以识别用户是否在没有登录的情况下对辩论进行了投票。

问题

由于我是使用cookie的新手,我想知道:实现cookie的最佳方法是什么,以便我可以将辩论投票插入数据库,并在未登录的用户两次点击同一辩论时对其进行检查? 我想我只需要一个唯一的号码,它将作为cookie存储在客户端,直到cookie被删除。 考虑到这一点,我认为可以根据用户IP地址创建一个随机数,如下所示:setcookie('temp_id', md5($_SERVER['REMOTE_ADDR']);

我知道用户可以更改IP地址,但我认为只要在客户端存储有一个数字,这就无关紧要。 这是一个好的方法来获得一个唯一的号码,可以存储在客户端的一个cookie,还是我应该设置一个不同的唯一的号码,因为某种原因会更好地工作? 这样做安全吗? 里面似乎没有任何重要的私人用户信息。

问题的下一部分是如何修改数据库代码以容纳那些未登录的用户。 我的数据库表poll_votes当前的配置如下:CREATE TABLE poll_votes (

vote_id INT(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,

yes VARCHAR(50) NOT NULL,

no VARCHAR(50) NOT NULL,

poll_id INT(11) NOT NULL,

idUsers INT(11) NOT NULL,

article_id INT(11) UNSIGNED,

seen TINYTEXT NOT NULL,

FOREIGN KEY (article_id) REFERENCES articles (article_id) ON DELETE CASCADE ON UPDATE CASCADE,

FOREIGN KEY (poll_id) REFERENCES polls (poll_id) ON DELETE CASCADE ON UPDATE CASCADE,

FOREIGN KEY (idUsers) REFERENCES users (idUsers) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB;

如您所见,我的表中的一个列是IDusers,它引用了表users中的注册用户。 这意味着我必须通过添加另一列来更改表,该列将在用户对辩论投票时跟踪唯一的cookie ID,并且还将IDusers设置为NOT NULL,对吗? 我想在实现它之前检查一下它,以确保我没有误解Cookie在这种情况下是如何用来解决这个问题的。 如果有什么困惑就告诉我。 谢了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值