Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php区分用户的最佳方式是什么_Php - Fatal编程技术网

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

php区分用户的最佳方式是什么,php,Php,我正在构建一个PHP投票系统,我想限制每个用户的投票数 那么,在我的网站上区分用户的最佳方式是什么 我可以通过cookies或会话来跟踪它们,但这似乎并不高效,因为如果用户删除cookies,他将通过安全测试。我知道不会有100%的解决方案,但我想在这里遵循最佳实践 有什么帮助吗?IP地址、cookie和会话。三个都试试 没有确定的射击方法,但这三种方法一起使用是最好的 此外,您可以尝试电子邮件地址验证,因为这会让人们感到厌烦,但这也会大大降低特定用户想要投票的可能性。许多网站让人们注册一个帐户

我正在构建一个PHP投票系统,我想限制每个用户的投票数

那么,在我的网站上区分用户的最佳方式是什么

我可以通过cookies或会话来跟踪它们,但这似乎并不高效,因为如果用户删除cookies,他将通过安全测试。我知道不会有100%的解决方案,但我想在这里遵循最佳实践


有什么帮助吗?

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] =>
)