应使用 require 引入 header.php 和 footer.php,二者仅含语义化片段(如 ),主文件需自行书写完整 html 结构;路径用 dir 拼接确保准确;css/js 通过变量动态注入。

直接用 include 或 require 就能引入,但路径写错、标签嵌套冲突、资源加载失控这三类问题最常导致页面白屏或结构错乱。
header.php 和 footer.php 文件内容不能含 、、
这是最容易踩的坑:如果 header.php 里写了 <title>...</title>,而主页面(比如 movie-avengers.php)本身也是完整 HTML,PHP 包含后就会变成双 、双 ,浏览器渲染异常,SEO 工具报结构错误。
-
header.php应只包含语义化片段,例如:<header><nav>首页 | 关于</nav></header> -
footer.php同理,只放:<footer><p>© 2026</p></footer> - 所有页面主文件(如
movie-avengers.php)必须自己写完整的......
路径写法要匹配实际目录结构,推荐用 __DIR__ 拼接
相对路径(如 include 'includes/header.php')在子目录下容易失效;硬编码绝对路径又难迁移。用 __DIR__ 是最稳的方案。
- 假设
header.php在includes/目录下,主文件在上层,统一写成:include __DIR__ . '/includes/header.php'; - 如果主文件在
movies/子目录(如movies/movie-avengers.php),仍可用同一句 ——__DIR__指向当前文件所在目录,拼出来就是/path/to/project/movies/../includes/header.php,PHP 自动解析正确 - 避免用
../includes/header.php这类手写相对路径,尤其当页面层级变深时极易出错
用 require 而不是 include 引入 header/footer
header.php 和 footer.php 是页面骨架,缺了就该立刻报错停止,而不是继续执行并吐出半截 HTML —— 后者更难调试。
-
require遇到文件不存在会抛Fatal error,脚本终止,问题暴露得早 -
include只报Warning,后续代码照常运行,可能造成空白页、CSS 不加载、JS 报错等连锁故障 - 若需防御性检查(比如开发环境路径未配好),可先用
file_exists()+is_readable()判断,再require,不建议无条件include
动态注入页面专属 CSS/JS 必须靠变量传递,不能全塞在 header.php 里
把所有 JS/CSS 都写死在 header.php 中,会导致每个页面加载冗余资源 —— 比如电影详情页加载了地图插件,而首页根本用不到。
- 在主页面顶部定义数组变量,例如:
$page_css = ['/css/movie-detail.css']; $page_js = ['/js/movie-player.js']; - 在
header.php里检查并输出:<link rel="stylesheet" href="<?=%20htmlspecialchars(%24page_css[0]%20??%20'')%20?>"> - 在
footer.php末尾插入:<script src="<?=%20htmlspecialchars(%24page_js[0]%20??%20'')%20?>"></script> - 注意:必须对变量做
htmlspecialchars()过滤,防止 XSS;空值要用?? ''防止 Notice
真正麻烦的从来不是怎么写 include,而是 header/footer 里混进全局样式、漏掉语义约束、或让路径和资源加载逻辑随页面增多而失控。盯住这四点,比反复查语法更管用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











