我想建立一个系统,允许访问者一次只能查看一个网页。 只允许一个浏览器窗口或选项卡。
我已经实现了一个名为“is_viewing”的 session 变量。如果属实,则该人将被拒绝访问这些页面(只需显示不同的模板)。
如果用户从一个页面导航到另一个页面,重置此 session 变量的最佳方法是什么?
我在 html body 的 onunload 事件中添加了 ajax 函数。它所做的只是将 session 变量设置为 false。
但这会带来各种麻烦和意想不到的结果。 刷新页面首先显示拒绝模板( session 变量由于某种我不知道的原因显示为 true),然后在另一次刷新后我可以再次加载页面。
我不能在使用 ajax 调用的脚本上使用 header 吗? 如果用户已经在查看另一个页面,我该如何重置 session 变量并跟踪用户在网站上的位置以拒绝他的访问?
最佳答案
如果您确实想阻止人们这样做,请限制服务器上每个 IP 的连接数。但请不要限制为一台左右,以免在拥有多台电脑时锁定整个家庭。
如果人们愿意忽略该限制(例如通过启动另一个浏览器),则可以为每个用户提供一个 cookie 并限制服务器上每个 cookie 的连接数 - 当新连接进入时杀死旧连接。
关于php - 使用 php/javascript 跟踪用户并禁止多个窗口/选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298243/