实际上,我正在尝试创建一个登录系统,它将使用户返回到他们所在的页面。我知道有人问过这个问题,我也看过其他答案,但我找不到解决我的问题的办法。
我的站点有一个有参考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.....
}我的问题是,如果客人点击一个链接(例如: 10004),他们会被带到网址:
http://www.XXXXXX.XXXX/mypage.php?query_ecr='10004'但是,在该页上,“redirurl”的值是:
http://www.XXXXXX.XXXX/mypage.php它忽略了查询字符串。因此,当用户从该页面登录,并且我的登录脚本将他们重定向回该页面时,页面会出现大量错误,因为它需要查询字符串。
如何在$_SERVER‘’PHP_SELF‘中包含查询字符串?
发布于 2013-11-21 17:05:16
你可以用:
$_SERVER['REQUEST_URI']要获得域名文件夹、查询字符串等之后的所有内容,可以使用其他$_SERVER变量来添加域,也可以在不更改主机的情况下不使用域名。
发布于 2013-11-21 16:59:15
那麽:
echo $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];请注意,您可能希望像这样对输出进行消毒:
$url = $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];
echo htmlspecialchars($url, ENT_QUOTES, 'utf-8');以防范XSS。
发布于 2013-11-21 16:58:54
查询字符串在$_SERVER['QUERY_STRING']中可用。只要把它们连在一起(别忘了问号),你就会没事的。:)
https://stackoverflow.com/questions/20127113
复制相似问题