Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php sendmail脚本中未定义的变量_Php_Variables_Undefined - Fatal编程技术网

php sendmail脚本中未定义的变量

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

我已经查看了论坛,但是还没有找到这个问题的答案。我收到一条错误消息说“注意:未定义的变量:C:\xampp\htdocs中的错误….

我的代码:

    <?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;?>