Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 - Fatal编程技术网

Php 如何拒绝特定网页与同一IP地址客户端的多个连接(或多个实例)?

Php 如何拒绝特定网页与同一IP地址客户端的多个连接(或多个实例)?,php,Php,考虑一个网页说, 我不希望有人打开page1.php的多个实例。如果用户打开多个浏览器中的同一页面,他将断开连接并显示警告消息 有没有关于如何进行这项工作的建议?可能的cookie检查,简单的.htaccess实现,IP检查 如果您需要有关该场景的进一步澄清,请告知我 链接: 编辑:接受“”方向 @Mods:您可以关闭此问题。存储IP地址,并每次使用此值和请求的URL进行检查,通过此选项,您可以决定哪个用户可以查看您的网页(也可以查看多少次) 如果有登录,那么我的解决方案可能适合您 如果在多个浏

考虑一个网页说, 我不希望有人打开page1.php的多个实例。如果用户打开多个浏览器中的同一页面,他将断开连接并显示警告消息

有没有关于如何进行这项工作的建议?可能的cookie检查,简单的.htaccess实现,IP检查

如果您需要有关该场景的进一步澄清,请告知我

链接:

编辑:接受“”方向


@Mods:您可以关闭此问题。

存储IP地址,并每次使用此值和请求的URL进行检查,通过此选项,您可以决定哪个用户可以查看您的网页(也可以查看多少次)


如果有登录,那么我的解决方案可能适合您

如果在多个浏览器中,则意味着在第二个浏览器中,用户必须再次登录

因此,您在数据库中做了一个记录,其中存储了用户信息/登录信息,一旦登录,您将无法再次登录

可能无法在不同选项卡中阻止来自同一浏览器的用户


谢谢

所以,这里有两个工具是IP和cookie

IP不是用户独有的。忘了他们吧。IP是路由数据的一种传递机制,它们太粗糙,无法识别用户

Cookie不会跨浏览器共享,因此您无法在跨浏览器使用Cookie识别用户

此外,web是无状态的。网站打开时,浏览器和服务器之间没有一个持久连接。加载页面后,它在浏览器中保持打开状态,但它与服务器之间没有通信

在这种情况下,使用IP或cookie几乎不可能实现您的要求。至少没有一些副作用,可能是用户从自己的帐户注销,或者共享同一IP的人互相锁定


您应该做的是以一种拥抱HTTP请求无状态本质的方式编写应用程序。您可以通过给用户一个唯一的cookie来识别他。相反,没有cookie的用户是新用户(包括不同的浏览器);利用这些信息对您有利。如果您需要在完成其他操作之前完成某个进程,则需要将此状态保留在服务器端,并将其绑定到特定用户。即“具有cookie XYZ的用户下一步需要执行操作C”,然后当用户向您的服务器发出HTTP请求时,让服务器评估该请求,并决定该请求是否符合用户应该执行的操作;通过重定向或拒绝请求进行适当的响应。

如果没有副作用,几乎不可能做到这一点,而副作用可能非常严重,也可能不严重。请定义一下为什么你这么想破坏网络?Cookie是毫无疑问的——多个浏览器。IP——IP可以共享。在无线网络上的家庭成员呢?(共享一个外部IP)一次只能有一个人使用该网站?@deceze-“断网”?我在双关语上目光短浅。如果您讨论的是可能的应用程序,那么我的目标是阻止来自特定池的当前登录用户生成另一个请求,直到服务器完成他的第一个请求。其他“原因”…同步购物车/支付处理或尽可能通用的尝试阻止DDOSattack@Dale-我的想法是阻止“单个”人员生成两个请求。我想,对于共享IP,基于IP的块将无法达到目的,对吗?不,没有活动登录。但我明白你的建议。太好了!我想我的答案是“没有cookie的用户就是新用户”。因为我还没有包括一个活动的登录系统,所以这种方法应该会有所帮助。谢谢你清楚地指导我。可悲的是,我不能给你投票,因为我没有15分,但我真诚的感谢。不过,另一方面,我很好奇,对于通用页面,如何阻止DDoS攻击?DDoS是与事务状态不同的问题。对于DDoS,您通常只有IP可供使用,但如果IP过于分散,即使这样也无济于事。搜索类似的讨论,这是一个完全不同的话题。你可以接受答案,即使你可能无法投票。