【发布时间】:2013-11-21 16:52:56
【问题描述】:
我实际上是在尝试创建一个登录系统,让用户返回他们所在的页面。我知道有人问过这个问题,并且我查看了关于 SO 的其他答案,但我找不到针对我的特定问题的解决方案。
我的网站有一个带有参考 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),他们会被带到 url:
http://www.XXXXXX.XXXX/mypage.php?query_ecr='10004'
但是,在该页面上,“redirurl”的值为:
http://www.XXXXXX.XXXX/mypage.php
它忽略查询字符串。因此,当用户从该页面登录,并且我的登录脚本将他们重定向回该页面时,该页面会出现大量错误,因为它需要查询字符串。
如何在 $_SERVER['PHP_SELF'] 中包含查询字符串?
【问题讨论】: