1

好的,所以我有我的 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 页面时的 url 是

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);

但是有没有别的办法?谢谢!

4

2 回答 2

6

看一下urlencode()功能。

请注意 XSRF,如果我将用户发送给他们,http://yoursite/login.php?r=http://mysitethattotallylookslikeyours/pleaseLoginAgainAnErrorHasOccurred.php他们可能会放弃他们的凭据。

为此,您只需将路径和查询字符串用作 的值r,然后重定向到"http://yoursite/" . $r.

于 2012-06-14T12:48:06.247 回答
0

如果您的表单使用 post 发送数据,您需要考虑如何传递 GET 数据,以便您的 URL 正确。

于 2012-06-14T12:50:16.727 回答