2014-03-01 93 views
0

我有此链接:逃逸和在GET

http://localhost/dow.php?url=/site.net/page.php?action=download&id=3424&authkey=234234324242342 

$_GET["url"] 

应该

=/site.net/page.php?action=download&id=3424&authkey=234234324242342` 

但是当我尝试

print $_GET["url"]; 

它只打印/site.net/page.php?action=download

问题很明显与&字符,我试图htmlspecialchars($_GET["url"])没有运气。 我能做些什么来获得整个字符串?

+0

对其进行编码打印您的链接之前,然后你点击它后对其进行解码 – ElefantPhace

回答

0

不是因为另外两个参数不同而造成的。

你需要让他们每个人分开。像$_GET['id'], $_GET['authkey']

或者你可以只使用foreach结构。

foreach($_GET as $k=>$v) 
{ 
$myparams[$k]=$v; 
} 

echo $myparams['authkey'];// "prints" 234234324242342 
0

我不知道你在哪里得到了目标网址,但在打印它之前尝试对它进行编码。 即encodeURIComponent函数在JS中,rawurlencode在PHP中,或者只是使用这个ref here来代替任何你想要的HTML字符。 rawurldecode它在$_GET['url']之后。

0

为了让你将不得不使用完整的请求$_SERVER['QUERY_STRING'];

如:

echo $_SERVER['QUERY_STRING'];