PHP处理表单数据主要用$_POST、$_GET、$_REQUEST、filter_input及多值处理:$_POST用于method="post",$_GET用于URL参数,$_REQUEST合并三者但不推荐生产使用,filter_input提供安全过滤,多值元素需数组判断与遍历。

当用户通过HTML表单提交数据到PHP脚本时,PHP需要正确接收、验证并处理这些输入。以下是获取并处理表单数据的常用方法:
一、使用$_POST获取POST方式提交的数据
当表单method属性为post时,数据通过HTTP请求体发送,PHP将其存入全局变量$_POST中,以关联数组形式保存键值对。
1、在HTML表单中设置method="post"并指定action指向PHP处理文件,例如action="handle.php"。
2、在handle.php中使用$_POST['字段名']访问对应字段值,如$_POST['username']。
立即学习“PHP免费学习笔记(深入)”;
3、检查字段是否存在且非空:使用isset($_POST['username']) && !empty(trim($_POST['username']))进行基础校验。
二、使用$_GET获取GET方式提交的数据
当表单method为get或通过URL参数传递时,数据附加在URL末尾,PHP将其解析后存入$_GET数组,适用于非敏感、简短的数据传输。
1、在HTML表单中设置method="get",或直接构造含查询参数的链接,如index.php?name=John&age=25。
2、在PHP中通过$_GET['name']和$_GET['age']分别获取值。
3、注意对输出内容进行htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8')转义,防止XSS攻击。
三、统一使用$_REQUEST合并处理
$_REQUEST是$_GET、$_POST和$_COOKIE的合并数组,默认包含所有三种来源的数据,适合不严格区分提交方式的简单场景。
1、直接访问$_REQUEST['email']可同时响应GET或POST传入的email参数。
2、需明确知晓该字段仅来自预期来源,否则可能引发安全混淆。
3、推荐仅在调试阶段使用,生产环境应显式指定$_POST或$_GET,并配合filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL)进行过滤。
四、使用filter_input进行安全过滤与验证
PHP内置filter扩展提供标准化输入过滤机制,比直接访问超全局数组更安全可靠,支持类型转换与规则校验。
1、获取并验证邮箱:$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)。
2、获取并清理字符串:$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_FULL_SPECIAL_CHARS)。
3、若验证失败返回false,应立即终止后续处理并返回错误提示:if ($email === false) { die('邮箱格式不合法'); }。
五、处理多值表单元素(如复选框、多选下拉)
当表单包含多个同名控件(如name="hobby[]")时,浏览器会以数组形式提交,PHP自动将其映射为$_POST中的索引或关联数组。
1、HTML中定义复选框组:阅读 游泳。
2、PHP中用is_array($_POST['hobby'])判断是否提交了至少一个选项。
3、遍历处理每个选中项:foreach ($_POST['hobby'] as $item) { echo htmlspecialchars($item); },并对每项单独过滤。










