为什么从HTML表单取值时PHP提示undefined array key错误
问题原因
- 直接在浏览器地址栏访问welcome.php时,请求为GET类型,
$_POST数组为空,不存在name、email两个键,因此触发未定义数组键的警告 - 若从表单页提交但未输入任何内容,部分PHP环境配置下也可能触发同类警告
修复方案
方案1(推荐,兼容性更强)
修改welcome.php代码,先判断POST参数是否存在再输出,同时增加XSS防护:
<!DOCTYPE html> <html> <body> <?php if (isset($_POST['name'], $_POST['email'])) { echo "Hello " . htmlspecialchars($_POST['name']); echo "<br>Your email address is " . htmlspecialchars($_POST['email']); } else { echo "请先从表单页面提交合法数据"; } ?> </body> </html>
方案2(无需改代码,仅调整访问逻辑)
不要直接访问welcome.php,先打开存放表单的HTML页面,填写姓名、邮箱后点击提交按钮,浏览器会自动以POST方法携带表单参数请求welcome.php,不会触发警告。
注意事项
- 确认表单的
method属性值为POST,如果设置为GET则需要改用$_GET数组获取参数 - 确认表单的
action属性路径正确,你当前代码里action="welcome.php"要求两个文件存放在同一级目录下,路径错误也会导致参数传递失败。
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

