我本質上是試圖建立一個登錄系統,將用戶返回到他們所在的頁面。我知道這個問題已經有人問了,我已經看過其他答案,但我找不到解決我的特定問題的方法。
我的網站有一個參考ID號碼錶(例如:10001,10003,10004,... 53401等)。這些數字也是鏈接。所有鏈接指向一個頁面(「mypage.php」),並參考ID號(10004)成爲一個查詢字符串到URL:
<td><?php echo '<a href="mypage.php?query_ecr=', urlencode($num), '">'; ?><?php echo $num; ?></a></td>
在我「的header.php」,這是每一個頁面上該網站的,有可能會打開下面的用戶登錄窗體菜單上的按鈕。
<form action='login/process.php' method='post'>
<label for='name'>Username:</label>
<input type='text' id='userid' name='user_name'/>
<label for='password'>Password:</label>
<input type='password' name='password' id='userpassword'/>
<input type='submit' value='Log In' />
<input type='hidden' name='login' value='1'>
<input type='hidden' value='".$_SERVER['PHP_SELF']."' name='redirurl'/>
</form>
通知「隱藏輸入」的名稱=「redirurl」。我想捕獲用戶所在的當前頁面。我已經有一個登錄腳本來檢查用戶名和密碼,並將它們重定向到他們需要的頁面。
//login/process.php
...blah blah blah other stuff...
global $database,$session;
$this->user_status=$database->CheckUserPass($_POST['user_name'],$_POST['password']);
$url = $_POST['redirurl'];
if($this->user_status==1)
{
$session->StartSession($_POST['user_name'],$_POST['password']);
header("Location: ".$url);
} else {
...blah blah blah.....
}
我的問題是,如果一個鏈路上的GUEST點擊(例如:10004),他們被帶到網址:
http://www.XXXXXX.XXXX/mypage.php?query_ecr='10004'
不過,該頁面上的「redirurl」的值是:
http://www.XXXXXX.XXXX/mypage.php
它忽略查詢字符串。因此,當用戶從該頁面登錄,並且我的登錄腳本將他們重定向到該頁面時,該頁面出現大量錯誤,因爲它需要查詢字符串。
如何在$ _SERVER ['PHP_SELF']中包含查詢字符串?
謝謝大家。你們都有有效的解決方案,但這是最好的,因爲不是我的所有頁面都有查詢字符串 – bagofmilk