Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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 获取用户ip地址并检查是否允许他再次投票_Php_Ip - Fatal编程技术网

Php 获取用户ip地址并检查是否允许他再次投票

Php 获取用户ip地址并检查是否允许他再次投票,php,ip,Php,Ip,我有一个图像应用程序,人们可以投票,我想检查用户的ip,不允许他第二次投票。什么是最好的方法,我应该获得ip并填写一个.txt文件,每次用户尝试投票时,我都会检查该文件,如果ip不在文件中,允许他??或者是否有更好的解决方案您可以通过以下方式获得用户的支持: $users_ip = $_SERVER['REMOTE_ADDR']; 不要使用文本文件(因为这会对硬盘不好,I/O太多);而是使用数据库 当用户到达投票脚本时: 检查此IP是否在db表中有记录 如果IP有记录,请检查用户上次投票的时

我有一个图像应用程序,人们可以投票,我想检查用户的ip,不允许他第二次投票。什么是最好的方法,我应该获得ip并填写一个.txt文件,每次用户尝试投票时,我都会检查该文件,如果ip不在文件中,允许他??或者是否有更好的解决方案

您可以通过以下方式获得用户的支持:

$users_ip = $_SERVER['REMOTE_ADDR'];
不要使用文本文件(因为这会对硬盘不好,I/O太多);而是使用数据库

当用户到达投票脚本时:

  • 检查此IP是否在db表中有记录
  • 如果IP有记录,请检查用户上次投票的时间,并与当前时间进行比较
  • 如果他上次投票的时间跨度>应该是什么,让他投票,更新该ip“上次投票”的db表

  • 如果用户在db中没有记录(第一次投票);插入具有ip和当前时间戳的db表行


您还可以将cookie存储一段时间间隔。如果用户投票支持某个问题,则保存该问题的特定cookie,如

setcookie('voted'.$_POST['qid'], 'yes', time() + 4800 , "/");

若问题是新的,那个么用户可以投票。

谢谢看起来像一个解决方案,只有你们有额外的信息。如果用户投票了,他就不能再投票了,我想这会让我的生活更轻松:),我会把ip放在数据库中,检查ip在数据库中是否有记录,如果有,我会通知用户他已经投票了。基于cookie的验证是个坏主意。用户可以通过使用不同的浏览器或使用私有模式(FireFox)或匿名(Chrome)跳过/绕过它。