PHP开发:如何在process.php中获取并使用URL携带的command、arg参数
实现方案
PHP 原生提供超全局变量 $_GET,会自动解析URL中?后面的查询参数为关联数组,无需手动解析字符串。
针对你给出的带参URL https://process.php?command=command3&arg=/home/items,在对应的 process.php 文件中直接按如下方式即可获取两个参数值:
// 空合并运算符兜底,避免参数缺失时抛出未定义键的警告 $command = $_GET['command'] ?? ''; $arg = $_GET['arg'] ?? '';
实操注意要点
- 你示例中写的
&是HTML渲染场景下对&的转义写法,实际发起HTTP请求时,服务端接收到的查询参数分隔符就是标准的&,PHP可以正常解析,不需要额外做转义处理。 - PHP会自动对URL编码后的参数值做解码,不需要手动调用
urldecode处理,取到的就是解码后的原始参数值。 - 使用空合并运算符
??给参数加默认值兜底,是为了避免参数缺失时PHP抛出“未定义数组键”的警告,比直接读取$_GET['参数名']的写法更健壮。 - 不要直接未校验就使用取到的参数值,根据参数的使用场景必须做对应安全校验:
- 如果参数要用于拼SQL语句,需使用PDO预处理做参数绑定,避免SQL注入
- 如果参数要传入系统命令执行函数(比如
shell_exec、exec),需对command做白名单匹配、对路径参数做合法性校验,避免命令注入 - 如果参数要直接输出到前端页面,需用
htmlspecialchars()做转义,避免XSS攻击
内容的提问来源于stack exchange,提问作者Tidal Waves
相关产品推荐
相关产品推荐

