【问题标题】:Question about including html page in PHP关于在PHP中包含html页面的问题
【发布时间】:2011-01-14 21:04:36
【问题描述】:

如果我在 PHP 页面(例如 index.php)中包含 HTML 页面,其中包含以下内容:

<?php
include ("../../forms/login/form.html");
?>

那么form.php会在index.php中正确显示吗?当我说得正确时,我的意思是它的所有图像和 CSS。

我问的原因是因为我不是这种情况。我试了一下,它会显示 form.html 但没有任何样式...

任何帮助将不胜感激,谢谢!

更新:


目前,我在 forms.html 上有以下内容:

<link href="view.css" media="all" rel="stylesheet" type="text/css" />
<script src="view.js" type="text/javascript"></script>
<link href="../../css/style.css" rel="stylesheet" type="text/css" />

现在,forms.html 本身可以正确显示。

在 index.php 上,我有:

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>UofS :: Residence Life Management System</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />

</head>

<body>

<?php
include ("html/header.html");
?>

<?php
include ("php/navigation.php");
?>
<br></br>
<?php
include ("forms/login/form.html");
?>
<br></br>
<?php
include ("html/footer.html");
?>

</body>

</html>

对forms.html 的唯一引用是通过php include()。没有指向它的样式表。这是没有正确加载 forms.html 的页面。这不对吗?

谢谢!

【问题讨论】:

  • 这是我最喜欢的关于 include 的思考方式……它本质上是复制和粘贴……但更简洁!

标签: php html css include


【解决方案1】:

样式表的路径可能是相对的。它需要相对于浏览器中的 url (index.php)。或者让它成为一个绝对路径。

自更新后编辑: view.css 和 view.js 不会被加载,因为它们的路径是相对的。将这些路径设置为 index.php 页面中的绝对路径或相对路径。将它们设为绝对将使它们在任何地方包含 form.html 时都能正常工作。使 index.php 的路径相对于 index.php 将使它们在从那里包含时起作用,但在从其他目录包含时则不起作用。

更好的是,如果您知道需要加载这些文件,请将链接放在 index.php 页面上,而不是 form.html 页面上。

另外请注意,您可以使用以站点根目录开头的路径,不必包含主机名和域名:

<link href="/css/style.css" rel="stylesheet" type="text/css" />

“css/style.css”之前的斜线将使它成为一个绝对路径,可以在您的实时和开发服务器上运行。

编辑...

假设您的 index.php 文件位于根目录,请在 forms.html 中尝试:

<link href="/forms/login/view.css" media="all" rel="stylesheet" type="text/css" />
<script src="/forms/login/view.js" type="text/javascript"></script>
<link href="/css/style.css" rel="stylesheet" type="text/css" />

【讨论】:

  • 斯科特:谢谢你的帮助。我想让我感到困惑的是我将如何使 index.php 页面中的路径成为绝对(或相对)......现在,对 forms.html 的唯一引用是 php include 语句。你能举个例子吗?
  • 您需要从浏览器的角度考虑路径。浏览器会解释它们并尝试加载 css 和 js 文件。因此,使您的路径成为 index.php (浏览器加载)的路径,而不是 forms.html (浏览器从未直接访问过)的路径。我将通过对您的目录结构的一些猜测来更新我的答案。
  • 再次感谢您的帮助。我的 index.php 确实位于根结构中,但是您上面建议的代码没有任何区别。嗯……
  • 我已经搞定了,现在,我刚刚从“/forms”和“/css”中删除了正斜杠。谢谢!
【解决方案2】:

显示 form.html 但没有任何样式...

您需要相应地调整对 CSS 文件的引用。使用绝对路径可能更好。

如果之前

<link rel="stylesheet" type="text/css" href="style.css" /> 

现在:

<link rel="stylesheet" type="text/css" href="http://host/path/to/style.css" /> 

【讨论】:

  • 我会保留 http://host 部分,这样我就可以在我的开发服务器和实时服务器上运行相同的代码,除此之外,使用绝对路径将是最简单的解决方案。跨度>
【解决方案3】:

它将在 PHP 页面中逐字包含 HTML 文件。如果外部资源的路径基于 PHP 页面的 URL 是正确的,那么它们就会显示出来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多