好的,我有post.php页面。如果您尚未登录,则会重定向到login.php,所以这是我的代码
if($login == 0) {
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location: login.php?r=".$url);
}
在我的login.php页面中(如果用户名和密码正确,我只会创建一个快捷方式)
if($accountmatch == 1) {
// make sessions
if(isset($_GET['r'])) {
$r = $_GET['r'];
header("Location: ".$r);
} else {
header("Location: index.php);
}
}
所以我的问题就是这个,当我登录时,页面将我引导到我想要的页面,但GET值不完整。
例如$ r的值是
localhost/mywebsite/post.php?mode=addtopic&f=1
所以当我到达login.php页面时,网址是
localhost/mywebsite/login.php?r=http://localhost/mywebsite/post.php?mode=addtopic&f=1
因此,当我登录时,它会将我重定向到此页面。
localhost/mywebsite/post.php?mode=addtopic
显然“&”标志结束我的网址,使f在我的原始网址中分开。
我如何附上它们?提前谢谢!
我知道我可以使用这个
$f = $_GET['f'];
header("Location: ".$r."&f=".$f);
但还有其他方法吗?谢谢!
答案 0 :(得分:6)
查看urlencode()
功能。
请注意XSRF,如果我将用户发送到http://yoursite/login.php?r=http://mysitethattotallylookslikeyours/pleaseLoginAgainAnErrorHasOccurred.php
,他们可能会放弃他们的凭据。
为此,您只需将路径和查询字符串用作r
的值,然后重定向到"http://yoursite/" . $r
。
答案 1 :(得分:0)
如果您的表单使用post发送数据,则需要考虑如何传递GET数据以使您的URL正确。