项目需求 javascript
访问网站页面时,有的页面须要受权才能访问,这时候就会要求用户登陆,跳转到登陆页面login.php,怎么实现登陆后返回到刚才访问的页面。 php
解决思路1: html
在跳转到登陆页面以前要将当前访问页面的url保存到cookie里面,登陆验证受权经过后,从cookie中取出这个url值,跳转到该url指定的页面。 java
具体实现方法:
浏览器
在提示用户登陆的同时,在session或者cookie中记录下请求页面的URL;登陆验证成功后在跳转回该URL。
cookie
checklogin.php session
代码以下: ide
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
函数
代码以下: post
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