2014-05-04 60 views
1

我對PHP很陌生(在CodeAcademy學習),我想用iframe做一個網頁瀏覽器。這是我到目前爲止:如何使用PHP變量作爲iframe元素的URL

<!DOCTYPE html> 
<html> 
<body> 
<?php 
$url = $_GET['url']; 
print $url; 
?> 

<form name="input" method="get"> 
Url: <input type="text" name="url" action="<?php echo $url; ?>"> 
<input type="submit" value="Go"> 
</form> 

<iframe src="<?php echo $url; ?>"> 
    <p>Your browser does not support iframes.</p> 
</iframe> 
</body> 
</html> 

上面的代碼塊是一個.php文件。我的問題是,iframe會導致我的域名的URL輸入URL。更好的解釋is here

我試圖用一個$partial = substr($url, x, y),並使得IFRAME導致echo $partial使原來的域名被切斷了,只有你輸入的URL是在iframe網址。這沒有用。我怎樣才能解決這個問題?

回答

1

只是檢查網址有一個「HTTP://」,然後繼續
別人添加的「http://」,由你的腳本

<!DOCTYPE html> 
<html> 
<body> 
<?php 
$url = $_GET['url']; 
print $url; 
if (strpos($url,'http') === 0) { //found at position 0 
    //ok 
} else { 

    if ((strpos($url,'google') === 0) or 
     (strppos($url,'some.other.site1') === 0) or 
     (strppos($url,'some.other.site2') === 0)) // here all the knowns SSL - Sites (this can not be the ultimate solution) 
    { 
     $url = 'https://'.$url; 
    } else { 
     $url = 'http://'.$url; 
    } 

} 
print '<br/>'.$url; 
?> 

<form name="input" method="get"> 
Url: <input type="text" name="url" action="<?php echo $url; ?>"> 
<input type="submit" value="Go"> 
</form> 

<iframe src="<?php echo $url; ?>"> 
    <p>Your browser does not support iframes.</p> 
</iframe> 
</body> 
</html> 
+0

這適用於某些網站,但不是全部。不工作的網站(例如谷歌或YouTube)是否阻止了這一點?謝謝btw! – GShocked

+1

你的權利。谷歌有SSL(https://),所以你也必須檢查這些URL,併爲每個地址單獨處理。 YouTube的作品whith http://但不知何故不顯示。 - >我認爲YouTube會有一個解釋。 - >抱歉沒有更好的解決方案 – ratmalwer

1

,只要您輸入的是一樣的東西「google.com 「iFrame將在當前目錄中查找名爲」google.com「的文件。

+0

看看代碼,它解釋更多。 – GShocked