好的,所以我有我的post.php页面.如果您还没有登录,您将被重定向到login.php,所以这是我的代码
if($login == 0) {
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
header("Location: login.php?r=".$url);
}
Run Code Online (Sandbox Code Playgroud)
在我的login.php页面中(如果用户名和密码正确,我只会创建一个快捷方式)
if($accountmatch == 1) {
// make sessions
if(isset($_GET['r'])) {
$r = $_GET['r'];
header("Location: ".$r);
} else {
header("Location: index.php);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是这个,当我登录时,页面将我引导到我想要的页面,但GET值不完整.
例如,$ r的值是
localhost/mywebsite/post.php?mode=addtopic&f=1
Run Code Online (Sandbox Code Playgroud)
所以当我到达login.php页面时,网址是
localhost/mywebsite/login.php?r=http://localhost/mywebsite/post.php?mode=addtopic&f=1
Run Code Online (Sandbox Code Playgroud)
因此,当我登录时,它会将我重定向到此页面.
localhost/mywebsite/post.php?mode=addtopic
Run Code Online (Sandbox Code Playgroud)
很明显,"&"符号结束了我的网址,使f在我的原始网址中分开.
我怎么能附上它们?先感谢您!
我知道我可以用它
$f = $_GET['f'];
header("Location: ".$r."&f=".$f);
Run Code Online (Sandbox Code Playgroud)
但还有其他方法吗?谢谢!
看看这个urlencode()功能.
请注意XSRF,如果我发送用户,http://yoursite/login.php?r=http://mysitethattotallylookslikeyours/pleaseLoginAgainAnErrorHasOccurred.php他们可能会放弃他们的凭据.
要做到这一点,您可以使用路径和查询字符串作为值r,并重定向到"http://yoursite/" . $r.
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |