2011-12-20 16 views
0

當頁面的其中一個參數是url時,$ _GET不起作用。

外部頁面(我沒有通電控制)顯示一個iframe到我的網頁,並將其傳遞參數,其中一個是:

turkSubmitTo=http%3A%2F%2Fwww.mturk.com 

當我的網頁上我想提取其他參數,它給我NULL的一切,但是當我刪除「http」它的作品。爲什麼是這樣,我能做些什麼來獲得其他參數?

編輯: 您可以自己在這裏試試吧:

http://www.translate.outofscopes.com/?turkSubmitTo=http%3A%2F%2Fwww.mturk.com 

使用Array()那裏是$ _GET一個print_r的,你可以嘗試刪除「HTTP」在參數中,它會工作。 在本地主機上,它完美地工作。

+0

檢查請求的URL(無論是PHP函數或介於$ _ SERVER),並自己解析它。 – Robus 2011-12-20 14:49:38

+0

'print_r($ _ GET)的輸出是什麼;'? – pgl 2011-12-20 14:55:28

+0

你能給我一個正則表達式嗎? – Vadiklk 2011-12-20 14:55:34

回答

2

嘗試類似:

 
$parameters = array(); 
if (isset($_SERVER['QUERY_STRING'])) { 
    $pairs = explode('&', $_SERVER['QUERY_STRING']); 
    foreach($pairs as $pair) { 
    $part = explode('=', $pair); 
    $parameters[$part[0]] = urldecode($part[1]); 
    } 
    } 

+0

工作過,謝謝,我會盡快回復你,沒有人向我解釋爲什麼我的問題會發生。與此同時,採取+1。 – Vadiklk 2011-12-20 15:17:13

1

你可以做到這一點,很容易地,但你需要控制什麼是創造的URL。訣竅是來urlencode 兩次

<? 

if (array_key_exists('url', $_GET)) 
{ 
    echo $_GET['url'] . '<br>'; 
    echo urldecode($_GET['url']) . '<br>'; 
} 

$url = 'http://example.com/a/index.php?a=123'; 
$encUrl = urlencode(urlencode($url)); 

?> 
<a href="http://<?= $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?url=' . $url; ?>">Not the best</a> - I've seen this fail. 
<br> 
<a href="http://<?= $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?url=' . $encUrl; ?>">Much Better</a>