$ _ 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',它会起作用。 在localhost上它完美运行。
答案 0 :(得分: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]); } }
答案 1 :(得分:1)
你可以很容易地做到这一点,但你需要控制创建网址的内容。诀窍是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>