
PHP报错“Undefined variable: Body”是因为在使用$Body .= ...前未初始化该变量,需在拼接前显式声明为空字符串。
php报错“undefined variable: body”是因为在使用`$body .= ...`前未初始化该变量,需在拼接前显式声明为空字符串。
在PHP中,使用`.=`(字符串连接赋值运算符)时,目标变量必须已存在且为字符串类型,否则会触发`Notice: Undefined variable`警告。示例代码中第48行`$Body .= "Name: ";`试图向一个从未声明过的`$Body`变量追加内容,PHP无法确定其初始值,因而报错。正确做法是在首次使用前显式初始化:
// 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 = Trim(stripslashes($_POST['body']));——表单中很可能根本没有名为body的字段(原代码使用的是message),强行读取会导致新的Undefined index错误; - 变量名区分大小写,
$Body与$body是两个不同变量,请确保全文统一(推荐小写$body以符合PHP命名惯例); - 建议开启
error_reporting(E_ALL & ~E_NOTICE);临时屏蔽Notice级提示(仅限开发调试),但根本解决方式始终是规范初始化变量; - 更安全的写法可结合
isset()或空合并操作符(PHP 7.0+):$message = $_POST['message'] ?? ''; $body = ''; $body .= "Name: " . ($name ?? '') . "\n"; $body .= "Phone: " . ($phone ?? '') . "\n"; // ……其余字段同理
初始化变量不仅是修复报错的必要步骤,更是编写健壮、可维护PHP代码的基础习惯。



















