2010-11-12 81 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