PHP开发:如何仅显示查询字符串中的john,去除demo=等多余内容?
问题解决:获取URL中的GET参数并加载对应页面
你的脚本当前用$_POST["demo"]获取参数,但用户访问的是带?demo=john的URL,这是GET请求而非POST请求,因此根本无法获取到目标参数,这是核心问题。要获取demo参数的值(即"john"),需调整参数获取方式,同时必须添加安全验证避免恶意路径注入风险。
修改后的脚本
// 获取GET参数里的demo值,默认设为"users" $page = $_GET['demo'] ?? 'users'; // 过滤参数,仅保留字母、数字和下划线,防止目录遍历攻击 $page = preg_replace('/[^a-zA-Z0-9_]/', '', $page); // 拼接目标文件路径 $filePath = "actions/{$page}.php"; // 检查文件是否存在,存在则加载,否则加载404页面 if (file_exists($filePath)) { include $filePath; } else { include "actions/404.php"; }
关键修改说明
- 将
$_POST替换为$_GET,匹配URL的GET参数传递方式 - 使用
??运算符(PHP7+支持)设置默认值,替代原有的null判断逻辑 - 增加正则过滤,确保参数仅包含安全字符,避免恶意路径注入(如
../这类危险输入) - 优化文件路径拼接逻辑,代码更简洁清晰
修改后,用户访问http://website.tld/index.php?demo=john时会正确加载actions/john.php;未传递demo参数时默认加载actions/users.php;对应文件不存在则加载404页面。
内容的提问来源于stack exchange,提问作者wqyutv
相关产品推荐
相关产品推荐

