讓我簡化URL進行演示:
http://yoursite.com/iframe_load.html?url=http://theirsite.com/index.php?a=1&b=2
注意到他們網站的URL包含查詢字符串(index.php?a=1&b=2
)爲好。由於URL包含&
,這是PHP如何拆分字符串:
url=http://theirsite.com/index.php?a=1
&
b=2
正如你看到的,url
現在僅持有該URL的一部分,而不是完整的URL (因爲它被&
分割)。
&
符號會'過早'破壞網址,因此您必須將其替換爲不會破壞網址的內容。
你必須通過iframe_load.html編碼URL,防止PHP的錯誤解釋的網址:
http://yoursite.com/iframe_load.html?url=http%3A%2F%2Ftheirsite.com%2Findex.php%3Fkey1%3Dval1%26key2%3Dval2
(請參閱iframe_load.html?url=
後的部分不包含任何?
或&
不再)
如果您從其他頁面鏈接到iframe_load.html,您可以使用PHP的函數urlencode()
爲您做到這一點:
一些頁面鏈接到iframe_load.html
<?php
// create a variable with the URL
// this is the normal URL, we will encode it later, when we echo it.
$other_websites_url = 'http://theirsite.com/index.php?key1=val1&key2=val2';
?>
<a href="http://yoursite.com/iframe_load.html?url=<?php echo urlencode($other_websites_url); ?>">Click to go to iframe_load.html</a>
<?php // ^see, here we urlencode the URL, just before we paste it inside our own URL.
使用urlencode()
,在URL中的特殊字符(如&
)改變成HTML實體,所以他們(臨時)失去其意義,並且不要破壞URL。別擔心,當您在iframe_load.html中訪問該網址時,該網址將被解碼,因此您將擁有iframe的正確網址。
這是他們的網站的URL看起來時,它的編碼,如:http%3A%2F%2Ftheirsite.com%2Findex.php%3Fkey1%3Dval1%26key2%3Dval2
正如你所看到的,&
已被替換%26
,和其他字符都被替換爲好。現在,你可以簡單地將其粘貼到您的URL:
http://yoursite.com/iframe_load.html?url=http%3A%2F%2Ftheirsite.com%2Findex.php%3Fkey1%3Dval1%26key2%3Dval2
因爲其他網站的網址好好嘗試一下含有&
了,PHP不會分裂的URL。
使用** urlencode()**函數後,我得到這樣的網址: URL = http%3A%2F%2Fwww.northjersey.com%2Fr%3F19%3D961 only。 – ARUN
您需要在**鏈接到iframe_load.html時使用它,而不是在iframe_load.html本身內。 –
換句話說,當您訪問** iframe_load.html **時,iframe_load.html?url ='之後的URL應該已被編碼。這樣,iframe_load.html不會將URL分成幾部分。 –