php $ _SERVER [“REQUEST_URI”]丢失字符串查询

时间:2013-11-20 13:33:01

标签: php

我很难将用户重定向到他们粘贴到浏览器网址的网页。 我有一个checklogin文件,用于检查用户是否已登录。不是它们被重定向到login.php页面。

方案: 当用户未登录并键入这样的URL时 http://intra.friends.net/forum/index.php?id=1&show=29&count=1 用户登录并应重定向到键入的URL。

现在它不能正常工作。 checklogin检查用户是否未登录并重定向到logout.php和logout.php重定向到login.php

checklogin.php

$url = $_SERVER["REQUEST_URI"];
if ($logged_in == 0 && (!isset($_COOKIE['autologin'])))
{
    $goback ="http://intra.tobiasfransman.net/hallinta/logout.php?temp=$url";
    header ("Location: $goback");
}

logout.php

$url = $_GET['temp'];
if ($logged_in == 0)
{
    $goback ="http://intra.tobiasfransman.net/login.php?select=$url";
    //$goback ="http://intra.tobiasfransman.net/login.php";
}

的login.php

$url = $_GET['select'];

问题在于$ url dosent包含它错过字符串查询的整个链接: 它看起来像这样:

/forum/index.php?id=1

它应该是这样的:

/forum/index.php?id=1&show=29&count=1

它丢失了字符串查询..无论如何我可以让它工作吗?

2 个答案:

答案 0 :(得分:1)

当您将请求uri作为另一个URL中的GET var时,您需要先将其转义:

$url = urlencode($_SERVER["REQUEST_URI"]);

答案 1 :(得分:1)

您的问题是您没有对查询字符串进行编码。

$url = urlencode($_SERVER["REQUEST_URI"]);
if ($logged_in == 0 && (!isset($_COOKIE['autologin'])))
{
    $goback ="http://intra.tobiasfransman.net/hallinta/logout.php?temp=$url";
    header ("Location: $goback");
}

那应该在你的logout.php中给你$ _GET ['temp']中的整个网址,而你的login.php中的$ _GET ['select']会返回整个网址。