2010-11-12 168 views
3

我想要做的事情,我認爲很簡單,但似乎並非如此。PHP包括完整的URL(或網站)

我想要的是能夠在我的PHP代碼中包含一個單獨的網站。基本上,這是因爲我正在編寫一個包含鏈接的「主」頁面,在我的鏈接下面是同一頁面中的「包含」網站。推理是,我只是爲我的所有用戶建立一個簡單的「主要」位置來訪問我們的工具。問題是,我們的工具跨越了其他幾個網站(我們網絡的所有本地和內部網站)。在PHP中,我不知道你能做到這一點,並以「做」的方法是使用file_get_contents()獲得遠程站點的內容:

<?php 
    $a = file_get_contents("http://url/folder"); 
    echo ($a); 
?> 

這種解決方案的問題是,所有的包括和引用CSS文件現在都被破壞了,因爲我相信,它只是帶來了將會生成的源代碼,所以鏈接CSS代碼將會丟失,並且它會繼承當前頁面使用的CSS。

這幾乎就像我希望它像iframe一樣工作,但我不想使用iframe,我只是想能夠在與我的前端相同的頁面中包含遠程「網站」。

+0

這真的很差的做法 – Hannes 2010-11-12 13:56:13

+1

但爲什麼你不喜歡iframe?它們符合你的目的。如果您抓取內容,您將獲取整個文檔(正如您所指出的那樣,沒有其他參考文件),包括您不能簡單地在主文檔中回顯的部分(「HTML」,「META」,「TITLE」等) 。 – initall 2010-11-12 13:58:38

+0

哎唷!你如何確保CSS和腳本隻影響他們的「原始」範圍? – jensgram 2010-11-12 14:06:23

回答

0

一般來說,解決方案是解析源代碼並自行修復鏈接。雖然我仍然傾向於使用iframe - 這就是他們的用處。

+0

我個人不會在網站上使用iframe,它們對搜索引擎沒有好處,它可能可以將iframe src作爲自己的Google網頁索引。 (我知道這是一個古老的線程,但剛剛發現這在谷歌一些相關的搜索,所以想要提出這一點) – 2015-03-12 09:14:31

+0

@LaurenceCope鑑於OP在談論一個內部網站將不會被索引的這是一個非常愚蠢的論點。 – 2015-03-12 13:57:32

+0

我最初並沒有看到任何對「內聯網」的引用,但現在我可以看到「(所有本地和內部的網絡)」,因此假設它們不能公開訪問,那麼應該沒問題。另外,如果他們已經是可以索引的網站,那麼它無論如何都不會有問題。我有自己的iframe資源索引的確切問題,我不想(例如菜單邊欄)。試圖刪除我的投票,但Stackoverflow不會讓我,直到你的答案被編輯!也許添加一個聲明,其確定的私人網頁,或已經索引的網頁,然後我可以刪除我的downvote,也許upvote。 – 2015-03-12 20:25:52

0

我實際上能夠自己弄清楚這一點。雖然這不是很好的PHP練習/安全性,但我在php.ini中啓用了allow_url_include,這解決了一些問題。再一次,這可能會回到實踐中,但是,包含的URL是我們組織內部的簡單網站/ URL,也不能在我們的網絡之外訪問。

+2

如果這全部在你的本地網絡上,那麼你可以在沒有HTTP請求的情況下完成你的包含,並簡單地通過非網絡載入網絡來重新使用代碼。你所做的不僅僅是壞習慣,而且是低效率,不可維護和不安全的。 – Brad 2010-11-12 15:39:22

+0

「完成它」沒有任何問題。這就是我們得到報酬的原因...... – Cypher 2013-04-22 19:03:08

0

你必須重寫al其他頁面以絕對鏈接到所有其他資源[css,js等],除此之外,你可以di內嵌框架非常透明,檢出http://api.fatherstorm.com/test/我在哪裏做一些jQuery魔術在點擊事件中追加頁面,但無法告訴他們在iframe中。

0
<HTML> 
<HEAD> 
    <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <META http-equiv="Cache-Control" content="no-cache"> 
    <meta http-equiv="Description" name="Description" content=""> 
    <meta http-equiv="Keywords" name="Keywords" content=""> 
    <TITLE>Title</TITLE> 
</HEAD> 
<FRAMESET rows="*,0"> 
    <FRAME src="http://url/folder" frameborder="0" noresize> 
    <NOFRAMES> 
     Your browser does not support frames. 
    </NOFRAMES> 
</FRAMESET> 
</HTML> 
+0

這不是一個非常優雅的解決方案,但會做簡單的事情。爲了更好的理解,請使用Javascript來查看LinkedIn的iframe。 – 2010-11-13 08:37:57