PHP中session过期跳转到登陆页面并跳出iframe框架的两个方法
最近在做lavarel中间件的时候,判断用户登录后操作超时,session过期后要重新登录,但是用的iframe,返回的登陆页总是在子框架中显示,这里提供两种方案去实现这种功能。
方法一:
一般使用中间件过滤用户是否登录,如果用户没有登陆则转向登陆页面,这时候可以使用return redirect(‘/admin/login’);
。
但当在页面上使用了iframe后,发现被重定向的只是父页面中的iframe区域,登陆页面内容显示在该区域中。
并且再次登陆后所有的页面又会全部展示到子页面中,还得重新刷新下页面来正确显示页面。
看看我以前写的代码:
1 2 3 4 5 6 7 | public function handle($request, Closure $next) { if(!Session::has('admin')){ return redirect('/admin/login'); } return $next($request); } |
因为redirect没有target属性,但html页面和js中有,于是,当判断出用户没有访问权限时,我们可以在php中使用js来转向到真正的登录页面。
在中间件使用如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public function handle($request, Closure $next) { if(!Session::has('admin')){ return redirect('/ladmin/login'); echo "<html>"; echo "<script>"; echo "window.open ('/ladmin/login','_top')"; echo "</script>"; echo "</html>"; exit(); } return $next($request); } |
方法二:
在你想控制跳转的页面,比如login.php中的
与之间加入以下代码:1 2 3 | <script type="text/javascript"> if (window != top) top.location.href = location.href; </script> |
PHP中输出语句echo(),print(),print_r(),var_dump()之间的区别 php操作数组的方法整理持续更新中