PHP-跟踪投票IP的最佳方式

PHP-跟踪投票IP的最佳方式,php,mysql,sql,Php,Mysql,Sql,我正在做一个小的附带项目,客人可以在一些帖子上投票,或者同意,或者不同意,然后我想保存在数据库中投票的IP。我想保存一个在“posts”表中投票的IP数组,但是我想这可能不够。是否建议使用如下单独表格?; 投票后: 邮政编码 不管用户是否同意投票,只要计算投票数,他们就不能再次投票。最好的方法是什么?提前感谢。是的,最好的方法是使用带有标识符(例如post_id)的单独表格来识别帖子。 切勿在每个字段中保存多个信息-将信息保存在同一个表中的数组中是残忍的 但是,请不要将IP地址“按原样”存储在数

我正在做一个小的附带项目,客人可以在一些帖子上投票,或者同意,或者不同意,然后我想保存在数据库中投票的IP。我想保存一个在“posts”表中投票的IP数组,但是我想这可能不够。是否建议使用如下单独表格?; 投票后: 邮政编码
不管用户是否同意投票,只要计算投票数,他们就不能再次投票。最好的方法是什么?提前感谢。

是的,最好的方法是使用带有标识符(例如post_id)的单独表格来识别帖子。 切勿在每个字段中保存多个信息-将信息保存在同一个表中的数组中是残忍的

但是,请不要将IP地址“按原样”存储在数据库中,因为这在许多国家是非法的,可能会造成很多麻烦! 改为使用散列函数,如
hash_hmac
(),散列IP地址并保存散列。。
因为散列是单向函数,这将确保用户的匿名性,但仍然可以让您有机会阻止用户多次投票。

是的,我将使用单独的表来进行此操作。将其存储在
posts
表中的数组中听起来很可怕,而且您获得的选票越多,检查IP的速度就越慢。您还应将他们的投票(同意/不同意)与投票一起存储在
post_voces
中。分开表格,以便
从post_voces中选择1,其中post_id=和IP=
快速获取IP的是或否。否则,你必须把整个该死的数组拉下来,用php查询数组。通过对post_id进行索引,mysql查询该表的速度将快于php查询数组的速度,并且您不必跨线(从DB服务器到Web服务器)拉动整个数组。这里的一般规则是在一个字段中不存储多个值。唯一的例外情况是,在少数情况下,存储的多个值总是被拉到一起,并且永远不会真正改变(想象一下产品的可用颜色)。在这里,虽然你会不断地在帖子记录上推和弹出一个数组,这意味着你每次抓到帖子时都要拉这个数组,这非常麻烦。您的数据库将更好地完成此任务。IP!=用户。这不会阻止我投票一百万次,如果我想登录的话,用户会有所帮助。。这样,您就不必依赖IP。“但是,不要将IP地址“按原样”存储在数据库中,因为这在许多国家是非法的,可能会造成很多麻烦!”这将使Apache的访问日志非法。有些司法管辖区可能需要谨慎一点——德国有特别严格的隐私法——但对于绝大多数司法管辖区来说,IP是可以接受的,特别是当用户的其他数据没有与之相关联的存储时。(散列方法也可能在德国引起同样的法律问题,因为为所有可用IP计算彩虹表将是完全微不足道的。)事实上,不仅德国,而且许多欧洲国家都有严格的隐私法。根据个人数据的定义,这确实可能是一个问题,因为一些国家的法院表示,可以引用到个人的数据已经是个人数据。这就是为什么许多网站在privac中声明Apache的IP地址日志顺便说一句,这应该是一个注意事项,以防止麻烦。当然,在散列上使用盐是强制性的,仍然不会提供真正的安全性,但至少可以防止有人仅仅以明文形式读取表中的IP地址。