項目需求 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