php区分用户的最佳方法是什么

问题描述

| 我正在构建一个PHP投票系统,我想限制每个用户的投票数。 那么,区分我网站上用户的最佳方法是什么? 我可以通过cookie或会话来跟踪它们,但这似乎不太有效,因为如果用户删除其cookie,他将通过安全测试。我知道不会有100%的解决方案,但是我想遵循此处的最佳做法。 有什么帮助吗?     

解决方法

IP地址,Cookie和会话。尝试所有三个。 没有确定的方法,但是将这三个方法结合使用是最好的。 另外,您可以尝试进行电子邮件地址验证,因为这会使人流连忘返,但这也将大大降低给定用户想要投票的可能性。     ,此处未提及的选项是使用Flash本地存储。缺点是它需要Flash。好处是很难清洗。     ,许多网站使人们注册一个帐户进行投票,以便他们的投票可以与该ID相关联并受到限制。 另一种选择是跟踪IP地址。尽管这并不完美(可能会欺骗IP地址,人们的IP地址有时会发生变化,每个NAT仅1票),但这总比没有好。 第三种选择是将IP地址与浏览器的用户代理字符串组合在一起,该字符串仍然存在一些漏洞,但距离越来越近。     ,我问了一个类似的问题,可能会提供一些见解: 无需注册即可实施投票系统 编辑:听起来像它实际上非常相似。为了给您一些视角,我实际上实际上是重新编写了代码的基础,以使投票与经过身份验证的用户帐户绑定在一起,因为没有其他方法可以肯定地完成此操作,这将不会被利用。     ,您可以使用get_browser和IP地址,对其进行记录并在每次投票时进行比较。您无需记录get_browser中的所有值,可以对其进行哈希处理(“ 0”)并存储哈希值。 尝试下面的get_browser代码:
<?php
$browser = get_browser(null,true);
print_r($browser);
?>
它将返回如下内容:
Array
(
[browser_name_regex] => ^mozilla/5\\.0 (windows; .; windows nt 5\\.1; .*rv:.*) gecko/.* firefox/0\\.9.*$
[browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* */Firefox/0.9*
[parent] => Firefox 0.9
[platform] => WinXP
[browser] => Firefox
[version] => 0.9
[majorver] => 0
[minorver] => 9
[cssversion] => 2
[frames] => 1
[iframes] => 1
[tables] => 1
[cookies] => 1
[backgroundsounds] =>
[vbscript] =>
[javascript] => 1
[javaapplets] => 1
[activexcontrols] =>
[cdf] =>
[aol] =>
[beta] => 1
[win16] =>
[crawler] =>
[stripper] =>
[wap] =>
[netclr] =>
)
    ,您可以从环境变量“ 3”中获取用户的IP地址。从理论上讲,每个用户都有一个唯一的IP地址。实际上,存在几个问题:同一Internet连接上的多个用户将具有相同的IP,并且IP由服务提供商更改和回收,因此最终将导致一些错误标识的重复用户。还有更改IP的方法,因此仍然可以稍作努力来欺骗系统。 如果您正在处理的是玩具应用程序,那么这些并不是严重的问题。如果这不是玩具应用程序,那么几乎可以肯定,找到一个现有的解决方案而不是尝试制作自己的解决方案会更好。我不能特别推荐任何东西,但是我敢肯定那里有很多东西。