You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:22:05