PHP通过GET参数动态加载页面仅输出路径不显示内容求助
问题排查与修复方案
核心故障原因
- 你在
index.php中仅完成了页面路径的字符串拼接,没有调用预先封装好的getPage()函数读取HTML文件的实际内容,直接输出了路径变量$pc,因此浏览器只会显示文件路径而非渲染页面内容。
代码修复步骤
1. 修改index.php逻辑
将原有代码段:
$page = isset($_GET["page"]) ? $_GET["page"] : "default"; $pc = "$website_pages/$page" .".html";
替换为:
$page = isset($_GET["page"]) ? $_GET["page"] : "default"; // 拼接带后缀的页面文件名 $page_name = $page . ".html"; // 调用封装函数读取页面内容 $pc = getPage($page_name);
body部分的输出逻辑不需要改动,保持<?php echo $pc; ?>即可。
2. 修复functions.php的路径错误(可选但建议)
当前getPage函数的默认页路径存在重复拼接includes的问题,会导致404时找不到默认页面,将:
return openPage("$website_pages/includes/default.html");
修改为:
return openPage("$website_pages/default.html");
额外优化建议
- 可以给
openPage函数的fopen操作增加错误判断,避免文件权限不足、文件损坏等场景下抛出PHP warning - 建议对
$_GET["page"]参数做安全过滤,避免出现路径穿越漏洞,例如过滤../等特殊字符,防止攻击者读取站点其他目录的敏感文件
内容的提问来源于stack exchange,提问作者SkillRow
相关产品推荐
相关产品推荐

