PHP提示Undefined variable: Body报错的修复方案咨询
PHP未定义变量$Body报错修复方案
核心结论
你打算添加的$body = Trim(stripslashes($_POST['body']));语句完全修不了这个报错,属于无效改动,还会平白增加无意义的代码逻辑,不要加。
报错原因
- PHP变量严格区分大小写:报错里提到的是大写B开头的
$Body,你准备加的是小写b开头的$body,二者是完全无关的两个变量,根本对应不上。 - 变量用途理解错了:这段代码里的
$Body是用来拼接组装邮件正文的临时变量,根本不是用来接收前端POST提交的body参数,原代码逻辑里本来就不需要读取$_POST['body']。 - 触发报错的直接原因:代码第一次操作
$Body时直接用了.=拼接运算符,这个运算符的作用是把内容追加到已有变量的末尾,但这行之前从来没定义过$Body、也没给过初始值,所以才会抛出未定义变量的通知。
零风险修复方法
改动量极小,不会影响原有业务逻辑:
- 先把服务器上现有的
email.php下载一份到本地存成备份,万一操作出错直接上传备份覆盖就能完全恢复,没有任何后遗症。 - 找到
$human = Trim(stripslashes($_POST['human']));这行,在它下面、// prepare email body text注释的上面,加一行变量初始化代码即可,后面所有原有代码一点都不用改:
$human = Trim(stripslashes($_POST['human'])); // 初始化邮件正文变量,解决未定义报错 $Body = ""; // prepare email body text $Body .= "Name: "; // 原报错的第48行,添加初始化后不会再触发通知 $Body .= $name; $Body .= "\n"; $Body .= "Phone: "; $Body .= $phone; $Body .= "\n"; $Body .= "Email: "; $Body .= $email; $Body .= "\n"; $Body .= "Message: "; $Body .= $message; $Body .= "\n";
改完保存上传覆盖原文件即可,错误日志里的这条通知会直接消失,表单发邮件的原有功能完全不受影响。
内容的提问来源于stack exchange,提问作者April W
相关产品推荐
相关产品推荐

