项目需求
访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。
解决思路1:
在跳转到登录页面之前要将当前访问页面的url保存到cookie里面,登录验证授权通过后,从cookie中取出这个url值,跳转到该url指定的页面。
具体实现方法:
在提示用户登录的同时,在session或者cookie中记录下请求页面的URL;登录验证成功后在跳转回该URL。
checklogin.php
代码如下:
session_start(); if (!isset ($_SESSION['login_ok'])) { echo "<script language=javascript>alert ('要访问的页面需要先登录。');</script>"; $_SESSION['userurl'] = $_SERVER['REQUEST_URI']; echo '<script language=javascript>window.location.href="login.php"</script>'; }
login.php
代码如下:
session_start(); //此处省略了账号密码验证代码,验证OK再执行下面代码 if (isset ($_SESSION['userurl'])) { //会话中有要跳转的页面 $url = $_SESSION['userurl']; } else { //没有要跳转的页面,则转到首页 $url = "home.php"; } //0.5s后跳转 echo "<meta http-equiv="refresh" content="0.5;url=$url">";
解决思路2:
除了存成cookie的形式,相信大家也看到了很多大型网站直接采用GET的形式获得,DZ的登陆机制就是这样。
这种思路具体是这样的:
在跳转到登录页面前要将访客访问的页面的url作为参数传递过去,登录验证后,授予访问权限之后跳转到该url指定的页面。
比如登录前的url为:http://www.xxx.com/member/authpage.html 当访客访问时,点击无权限,跳转到登录页面的地址就为login.php?redirect_url=http://www.xxx.com/member/authpage.html,这样在登录时就可以用GET方式获取该参数 http://www.xxx.com/member/authpage.html,登录验证成功后跳转到authpage.html 这个页面就可以了。
<? $url=$_GET["url"]; header("Location:"."http://".$url);?> <?php $url = $_GET['url']; Header("Location:$url"); ?>
如保存为aaa.php,可以实现aaa.php?url=www.baidu.com跳转到百度的效果
if($_COOKIE["u_type"]){ header('location:register.php');}else{ setcookie('u_type','1','86400*360');//设置cookie长期有效 header('location:zhuce.html');}
header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(header)输出到浏览器。
header()函数的定义如下:
void header (string string [,bool replace [,int http_response_code]])
可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。
第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。
注意:
1.location和“:”号间不能有空格,否则不会跳转。
2.在用header前不能有任何的输出。
3.header后的PHP代码还会被执行。例如,将浏览器重定向到冠威博客
< ?php//重定向浏览器header("Location: http://www.guanwei.org");//确保重定向后,后续代码不会被执行exit;?>
若设置content="秒数;url=网址",则定义了经过多长时间后页面跳转到指定的网址。例如,使用meta标签实现疫苗后页面自动跳转到冠威博客。
< meta http-equiv="refresh" content="1;url=http://www.guanwei.org">
例如,以下程序meta.php实现在该页面中停留一秒后页面自动跳转到www.guanwei.org。
< ?php$url = "http://www.guanwei.org"; ?>< html>< head>< meta http-equiv="refresh" content="1; url=< ?php echo $url; ?>">< /head>< body>页面只停留一秒……< /body>< /html>
例如,此代码可以放在程序中的任何合法位置。
< ?php$url = "http://www.guanwei.org";echo "<script language='javascript' type='text/javascript'>";echo "window.location.href='$url'";echo "</script>";?>
来自:http://www.guanwei.org/post/PHPnotes/04/php-redirect-methods.html
http://hi.baidu.com/rj52077/item/ee2bdfd111b9bdce1a72b4a7
http://www.4u4v.net/php-user-login-to-jump-back-on-the-realization-of-ideas-and-an-access-code-to-the-page.html