php区分用户的最佳方式是什么
我正在构建一个PHP投票系统,我想限制每个用户的投票数 那么,在我的网站上区分用户的最佳方式是什么 我可以通过cookies或会话来跟踪它们,但这似乎并不高效,因为如果用户删除cookies,他将通过安全测试。我知道不会有100%的解决方案,但我想在这里遵循最佳实践php区分用户的最佳方式是什么,php,Php,我正在构建一个PHP投票系统,我想限制每个用户的投票数 那么,在我的网站上区分用户的最佳方式是什么 我可以通过cookies或会话来跟踪它们,但这似乎并不高效,因为如果用户删除cookies,他将通过安全测试。我知道不会有100%的解决方案,但我想在这里遵循最佳实践 有什么帮助吗?IP地址、cookie和会话。三个都试试 没有确定的射击方法,但这三种方法一起使用是最好的 此外,您可以尝试电子邮件地址验证,因为这会让人们感到厌烦,但这也会大大降低特定用户想要投票的可能性。许多网站让人们注册一个帐户
有什么帮助吗?IP地址、cookie和会话。三个都试试 没有确定的射击方法,但这三种方法一起使用是最好的
此外,您可以尝试电子邮件地址验证,因为这会让人们感到厌烦,但这也会大大降低特定用户想要投票的可能性。许多网站让人们注册一个帐户进行投票,以便他们的投票可以与该id相关联并受到限制 另一个选择是跟踪IP地址。虽然这并不完美(IP地址可能被欺骗,人们的IP地址偶尔会改变,每个NAT只有1票),但总比没有好
第三种选择是将IP地址与浏览器的用户代理字符串相结合,该字符串仍然存在一些漏洞,但距离更近。您可以从环境变量
$\u SERVER['REMOTE\u ADDR']
获取用户的IP地址。理论上,每个用户都有一个唯一的IP地址。在实践中,存在几个问题:同一互联网连接上的多个用户将拥有相同的IP,并且IP会被服务提供商更改和回收,因此最终会出现一些错误识别的重复用户。还有一些方法可以改变你的IP,所以你仍然可以通过一些努力来欺骗系统
如果您正在开发的是一个玩具应用程序,那么这些问题并不严重。如果这不是一个玩具应用程序,你几乎肯定会更好地找到一个现有的解决方案,而不是试图使自己的。我不能特别推荐,但我肯定有很多。我问了一个类似的问题,可能会提供一些见解:
编辑:听起来很像。为了让您了解一些情况,我实际上重新编写了代码的基础,以便将投票绑定到经过身份验证的用户帐户,因为没有其他方法可以实现这一点,因为它肯定不会被利用。您可以使用get_浏览器和IP地址,记录它们并在每次投票时进行比较。您不需要记录get_browser中的所有值,您可以对其进行散列(
$userData=md5(get_browser(null,true))
)并存储散列
请尝试下面的get_浏览器代码:
<?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] =>
)