Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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_Yii2 - Fatal编程技术网

Php 阻止用户浏览其他页面

Php 阻止用户浏览其他页面,php,yii2,Php,Yii2,这是一个场景,我有两个用户,一个是员工,另一个是住户 该员工在我们的网站上有一个帐户,在那里他们可以看到所有居民的文件,他们可以选择这些文件,以便居民填写 顺便说一句,该居民在网站上没有账户。他们填写上述文件的唯一方法是向他们发送包含API的电子邮件,或通过现场提供给他们并具有员工登录会话的设备 由于员工无法始终监控住户的操作,我如何防止住户在设备提供给他们后浏览其他页面(返回) 谢谢 编辑:所以我之前做的是,我为这些用户设置了单独的帐户,但仔细考虑后,不需要为住户设置帐户,特别是当他们太老而无

这是一个场景,我有两个用户,一个是员工,另一个是住户

该员工在我们的网站上有一个帐户,在那里他们可以看到所有居民的文件,他们可以选择这些文件,以便居民填写

顺便说一句,该居民在网站上没有账户。他们填写上述文件的唯一方法是向他们发送包含API的电子邮件,或通过现场提供给他们并具有员工登录会话的设备

由于员工无法始终监控住户的操作,我如何防止住户在设备提供给他们后浏览其他页面(返回)

谢谢

编辑:所以我之前做的是,我为这些用户设置了单独的帐户,但仔细考虑后,不需要为住户设置帐户,特别是当他们太老而无法使用设备时。在住户和员工之间登录/注销以填写文档将使流程加倍

我在想,如果能像这样节省时间是不是很好
$session=$\u session['fillUp']
每当员工选择一份文档进行填写时,在保存文档(员工只能这样做)后,表单将要求员工输入一个安全代码,以便保存文档并取消会话

如果在除文档页面(如果存在)之外的其他页面上检查该会话,则会将居民重定向到文档,从而在填充文档时阻止导航

// Check session 'fillUp' for every controller except controller sign
public function beforeAction($action)
{
   if (Yii::$app->controller->id != 'sign') {
      $session = Yii::$app->session;

      // session 'fillUp' contains the url of the document to be signed
      if ($session->has('fillUp')) {
         $this->redirect($session->get('fillUp'));
      }
   }
}

您永远不会阻止人们使用浏览器的默认导航选项。无论是浏览器后退按钮,还是滑动以向后导航。我见过在用户体验测试会话中,人们错误地向后滑动导航

我们需要处理上一页上发生的事情,而不是试图锁上门,如果他们实现了向后导航。让我们来讨论一下它可能发生的可能性

你想要达到的目标有两个方面

第一种方法是停止浏览器缓存上一页。这意味着任何反向导航都会触发服务器获取信息的请求

我们可以通过向敏感页面的页面内容添加标题来阻止这种情况: 发送
缓存控制:无缓存
杂注:无缓存
过期:-1

第二部分是决定如果有人返回,服务器再次收到该页面的请求,该怎么办


您当然希望在常驻页面的第一次点击中将会话标记为“常驻”。如果会话中有一个“常驻”标记,您可以从中选择显示一个警告,并链接回他们应该访问的页面,或者简单地将他们重定向回该页面而不进行交互。就我个人而言,我认为带有链接的警告更清晰,可以停止混乱。

您尝试过什么?看看这个并编辑你的问题。编辑完问题。你必须发布相关代码来编辑问题。是的,这就是我要做的。在常驻用户访问常驻用户页面后,为其设置一个会话,因此,每当他们使用浏览器的任何默认导航转到网站内的任何其他页面时,他们将始终重定向到常驻用户页面。确实如此,但您还需要确保请求转到服务器,并且不会从浏览器缓存加载。因此,我的答案是第一步。