php sendmail脚本中未定义的变量
我已经查看了论坛,但是还没有找到这个问题的答案。我收到一条错误消息说“注意:未定义的变量:C:\xampp\htdocs中的错误….” 我的代码:php sendmail脚本中未定义的变量,php,variables,undefined,Php,Variables,Undefined,我已经查看了论坛,但是还没有找到这个问题的答案。我收到一条错误消息说“注意:未定义的变量:C:\xampp\htdocs中的错误….” 我的代码: <?php if (isset($_POST["send"])) { $name = $_POST["name"]; $email = $_POST["email"]; $subject = $_POST["subject"]; $message = $_POST["message"]; $erro
<?php
if (isset($_POST["send"])) {
$name = $_POST["name"];
$email = $_POST["email"];
$subject = $_POST["subject"];
$message = $_POST["message"];
$errors = array();
$email_matcher = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*" .
"@" .
"[a-z0-9-]+" .
"(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/";
if (preg_match($email_matcher, $email) == 0) {
array_push($errors, "You did not enter a valid email address");
}
if (count($errors) == 0) {
$to = "johnnyB@gmail.com";
$subject = "[From My Web] " . $subject;
$from = $name . " <" . $email . ">";
$headers = "From: " . $from;
header("location:thank_you.php");
if (!mail($to, $subject, $message, $headers)) {
array_push($errors, "Mail failed to send.");
}
}
}
编辑:(有关缺少的错误数组和foreach
循环,请参阅下面添加/修改的PHP代码)
由于您没有提供HTML表单,最可能的原因是表单元素没有命名
我为您提供了一个示例HTML表单,您可以根据该表单进行修改,以适应这种情况,我已经使用您在问题中提供的PHP/mail函数对其进行了测试
<form method="POST" action="handler.php">
Name:
<input type="text" name="name">
<br>
Email:
<input type="text" name="email">
<br>
Subject:
<input type="text" name="subject">
<br>
Message: <br>
<textarea rows="6" name="message" cols="40"></textarea>
<br>
<input type="submit" value="Submit" name="send">
</form>
张贴你的表格。最有可能的情况是,表单元素没有命名和/或包含打字错误/字体。你的条件语句控制一切name=“send”
如果您的表单中没有,其他表单也没有,那么在哪一行有cause.error?如上所述,发布完整的错误消息,以及与之相关的完整文件。我认为问题在于您试图在表单上显示错误,例如在if(isset($\u post[“send”])之外的某个地方在定义了$errors的块中,您尝试访问不存在的$errors变量。如果不进行编辑,这只是一个猜测。根据错误消息,我认为他的问题是他试图在表单上显示错误的位置,例如(在if(isset($\u POST[“send”])之外的某个位置)
在定义了$errors
的块中,他将尝试访问不存在的$errors
variable@user574632+1你肯定是正确的。OP没有展示的另一件事,可能是JS和/或Ajax的混合。我已经为OP提供了一个使用发布代码的示例表单。OP必须发布一个com解释它为什么不能使用我的答案。@user574632 OP的错误消息没有列出确切的变量;这是模糊的。我收到一条错误消息说“注意:未定义的变量:C:\xampp\htdocs中的错误…”
”-现在很难说,但你所说的不应该被排除在等式之外。我相当肯定,这条消息暗示了一个特定的变量,名为$errors
-如果变量是$cat
,它会读为注意:未定义的变量:C中的cat:\…
,但这都是没有op反馈的推测。我从来没有使用过了解人们为什么发布和leave@user574632在这一点上,我也相信你所说的。我正试图复制OP的问题,但没有成功,并试图找到一个替代解决方案。如果我不能或发现我追鬼太久,那么我将删除我的答案。我也不明白他们什么时候离开,但人们乐有时可能是奇怪的动物;我也不会把自己排除在外;我不离开,我可以变得很奇怪;谁不是有时哈哈大笑——干杯,谢谢你的回馈。
<form method="POST" action="handler.php">
Name:
<input type="text" name="name">
<br>
Email:
<input type="text" name="email">
<br>
Subject:
<input type="text" name="subject">
<br>
Message: <br>
<textarea rows="6" name="message" cols="40"></textarea>
<br>
<input type="submit" value="Submit" name="send">
</form>
<?php
if (isset($_POST["send"])) {
$name = $_POST["name"];
$email = $_POST["email"];
$subject = $_POST["subject"];
$message = $_POST["message"];
$errors = array();
$email_matcher = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*" .
"@" .
"[a-z0-9-]+" .
"(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/";
if (preg_match($email_matcher, $email) == 0) {
array_push($errors, "You did not enter a valid email address");
}
if (count($errors) == 0) {
$to = "email@example.com";
$subject = "[From My Web] " . $subject;
$from = $name . " <" . $email . ">";
$headers = "From: " . $from;
header("location:thank_you.php");
if (!mail($to, $subject, $message, $headers)) {
array_push($errors, "Mail failed to send.");
}
}
}
?>
<?php foreach($errors as $error):?>
<p class="layer-content">
<?php echo $error;?>
</p>
<?php endforeach;?>