
PHP 报错“Undefined variable: Body”是因为在使用 $Body .= ... 进行字符串拼接前未声明该变量;只需在首次拼接前将其初始化为空字符串即可安全修复。
php 报错“undefined variable: body”是因为在使用 `$body .= ...` 进行字符串拼接前未声明该变量;只需在首次拼接前将其初始化为空字符串即可安全修复。
在 PHP 中,$Body .= "xxx" 是复合赋值操作符,等价于 $Body = $Body . "xxx"。这意味着 PHP 会先尝试读取 $Body 的当前值,再与右侧字符串拼接。如果 $Body 从未被定义(即未初始化),PHP 就会在严格模式或开启 E_NOTICE 时抛出 “Undefined variable” 警告——这正是你日志中反复出现的 PHP Notice: Undefined variable: Body in email.php on line 48 的根本原因。
✅ 正确做法是:在第一次使用 $Body .= 前,显式初始化 $Body 为空字符串:
// prepare email body text $Body = ''; // ✅ 关键:初始化为空字符串,消除未定义警告 $Body .= "Name: "; $Body .= $name; $Body .= "\n"; $Body .= "Phone: "; $Body .= $phone; $Body .= "\n"; $Body .= "Email: "; $Body .= $email; $Body .= "\n"; $Body .= "Message: "; $Body .= $message; $Body .= "\n";
⚠️ 注意事项:
- 不要写成
$Body = null或$Body = false—— 这会导致拼接时触发类型转换警告(如null转为''可能隐式但不推荐); - 也不要依赖
error_reporting(0)或关闭E_NOTICE来掩盖问题,这会掩盖真实逻辑缺陷; - 更简洁的写法是直接用字符串插值或数组
implode()构建消息体(适合进阶优化),例如:$Body = "Name: $name\nPhone: $phone\nEmail: $email\nMessage: $message\n";
但需确保
$name等变量已安全过滤(你当前使用的Trim(stripslashes(...))是基础防护,生产环境建议改用filter_input()并校验数据合法性)。
? 总结:所有用于 .=, += 等复合赋值的变量,都必须预先定义。这是 PHP 的语言特性,而非代码风格问题。添加 $Body = ''; 这一行既安全、轻量,又完全符合你“最小改动、最大确定性”的维护原则——无需重构逻辑,即可彻底消除该错误日志。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











