2013-05-15 63 views
0

我在使用$_GET时遇到问题。

我有一个看起来像http://www.example.com/404.php?uri=xyz的URL。现在我想读出$_GET['uri']并将其转换为稍后将用于标题功能的变量。

的代码看起来像这样:

$get_uri = $_GET['uri']; 
... 
if (empty($_POST['pref_lang']) === false) { 
    header("Location: ../$content/404.php?uri=$get_uri");  
} 

但出于某种原因,这是行不通的。当我将变量$get_uri更改为像$get_uri = "123";这样的工作。当我回显出$get_uri = $_GET['uri']时,它会正确回显。

如果有人能给我一个关于如何获取这个信息的提示,那将会很棒。

非常感谢。

+0

只要标头调用与'$ get_uri'设置的范围相同,你应该很好。尝试更改标题调用以打印并查看获得的结果 – Orangepill

+0

您所显示的代码没有任何问题。你做了什么来调试呢?分配给它后,你可以'vardump' $ get_uri吗? –

+2

*不起作用*不是一个足够的问题描述。相反,描述你的代码应该如何表现以及它的实际行为 – Oswald

回答

3

您需要正确地对其进行编码:

header("Location: ../$content/404.php?" . http_build_query(array('uri' => $get_uri))); 
+0

你好,谢谢你的回答。我会得到以下错误消息:解析错误:语法错误,意外的T_OBJECT_OPERATOR,期待')'... – bonny

+0

我修正了错字,它应该是'=>'而不是' - >'。 – Barmar

+0

好的,谢谢,但它不工作:(uri将是空的。 – bonny

0

对不起,我迟到答复,在我的角度来看这个代码应工作,请你检查这个代码,让我知道了反馈

<?php 
    $domainName=explode("uri=", "http://www.example.com/404.php?uri=xyz"); 
    echo $get_uri=$domainName[1]; 
    if (empty($_POST['pref_lang']) === false) { 
     header("Location: ../$content/404.php?uri=$get_uri");  
    } 
?> 
+0

你好,谢谢你的回答,代码的问题在于uri = xyz是一个变量,会自动创建。所以我需要读$ _GET。谢谢。 – bonny

+0

可以给你一点清晰度,即uri也是变化的,或者仅在=之后,即xyz仅仅变化? – user1696874

+0

否则我们可以这样使用,这就像gettign的URL然后爆炸,我认为它会工作$ domainName = explode(“uri =”,$ _SERVER ['SERVER_NAME']); – user1696874