2014-03-01 148 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'];