PHP表单获取文本框输入需确保method与超全局数组匹配、name属性一致,用isset()和!empty()判空防Notice,输出前必过htmlspecialchars()防XSS,数据库写入须用预处理或mysqli_real_escape_string()。

PHP 表单获取文本框输入,关键不是“能不能拿到”,而是“拿得对不对、安不安全”。直接用 $_POST['name'] 或 $_GET['name'] 读取,但没校验、没过滤、没判断是否提交,90% 的基础问题都出在这几步。
确认表单 method 和 input name 是否匹配
常见错误是前端写 ,后端却去读 $_GET['username'];或者 ,后端却写 $_POST['username'](少个下划线)。
- 检查 HTML 表单的
method属性:是post就查$_POST,是get就查$_GET -
标签必须有name属性,id或class不起作用 - 提交按钮要有
type="submit",否则$_POST可能为空
用 isset() 和 empty() 判断输入是否真实存在
直接访问 $_POST['content'] 会触发 Notice: Undefined index 错误。不能假设用户一定点了提交、填了内容。
- 先用
isset($_POST['content'])确认字段被提交(防止未提交时报错) - 再用
!empty($_POST['content'])判断值非空且非 "0"、false、null 等“假值” - 如果只是想区分“空字符串”和“未提交”,用
array_key_exists('content', $_POST)
别跳过 htmlspecialchars() 就直接 echo 输出
用户在文本框里输 ,你原样 echo $_POST['comment'],就等于把 XSS 漏洞亲手贴到页面上。
立即学习“PHP免费学习笔记(深入)”;
- 所有要输出到 HTML 的用户输入,必须过
htmlspecialchars($str, ENT_QUOTES, 'UTF-8') - 数据库写入前要用
mysqli_real_escape_string()或更推荐 PDO 预处理,不能只靠htmlspecialchars() -
filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)可以一步完成获取 + 校验邮箱格式
一个安全可用的最小示例
下面这段代码能跑通、不报 Notice、防简单 XSS、有基本判空,适合新手起步:
" . $safe_name . "!";
} else {
echo "请输入姓名";
}
}
?>
注意:trim() 去首尾空格、?? '' 防止未定义、ENT_QUOTES 同时转义单双引号——这些细节漏掉一个,上线后就可能被绕过。











