Php 阻止用户浏览其他页面
这是一个场景,我有两个用户,一个是员工,另一个是住户 该员工在我们的网站上有一个帐户,在那里他们可以看到所有居民的文件,他们可以选择这些文件,以便居民填写 顺便说一句,该居民在网站上没有账户。他们填写上述文件的唯一方法是向他们发送包含API的电子邮件,或通过现场提供给他们并具有员工登录会话的设备 由于员工无法始终监控住户的操作,我如何防止住户在设备提供给他们后浏览其他页面(返回) 谢谢 编辑:所以我之前做的是,我为这些用户设置了单独的帐户,但仔细考虑后,不需要为住户设置帐户,特别是当他们太老而无法使用设备时。在住户和员工之间登录/注销以填写文档将使流程加倍 我在想,如果能像这样节省时间是不是很好Php 阻止用户浏览其他页面,php,yii2,Php,Yii2,这是一个场景,我有两个用户,一个是员工,另一个是住户 该员工在我们的网站上有一个帐户,在那里他们可以看到所有居民的文件,他们可以选择这些文件,以便居民填写 顺便说一句,该居民在网站上没有账户。他们填写上述文件的唯一方法是向他们发送包含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
头
第二部分是决定如果有人返回,服务器再次收到该页面的请求,该怎么办
您当然希望在常驻页面的第一次点击中将会话标记为“常驻”。如果会话中有一个“常驻”标记,您可以从中选择显示一个警告,并链接回他们应该访问的页面,或者简单地将他们重定向回该页面而不进行交互。就我个人而言,我认为带有链接的警告更清晰,可以停止混乱。您尝试过什么?看看这个并编辑你的问题。编辑完问题。你必须发布相关代码来编辑问题。是的,这就是我要做的。在常驻用户访问常驻用户页面后,为其设置一个会话,因此,每当他们使用浏览器的任何默认导航转到网站内的任何其他页面时,他们将始终重定向到常驻用户页面。确实如此,但您还需要确保请求转到服务器,并且不会从浏览器缓存加载。因此,我的答案是第一步。