我本质上是试图建立一个登录系统,将用户返回到他们所在的页面。我知道这个问题已经有人问了,我已经看过其他答案,但我找不到解决我的特定问题的方法。
我的网站有一个参考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