变量存在,但给出一个未定义的变量错误

问题描述:

这真的让我......我不断收到一个未定义的变量,即使它在那里! 我该如何摆脱这个错误?何况我甚至不能确定形式的作品,因为使用而不是活的服务器上XAMPP变量存在,但给出一个未定义的变量错误

表上contact.php

 <div class="col-md-6 col-md-offset-3 emailForm"> 
        <?php if (isset($result)) { echo "$result";} ?> 
      <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
       <div class="form-group"> 
        <label for="name">Your Name:</label> 
        <input type="text" name="name" class="form-control" value="<?php echo isset($_POST['name']) ? $_POST['name'] : ''; ?>" /> 

       </div> 
       <div class="form-group"> 
        <label for="subject">Subject:</label> 
        <input type="text" name="subject" class="form-control" value="<?php echo isset($_POST['name']) ? $_POST['subject'] : ''; ?>" /> 
       </div> 
       <div class="form-group"> 
        <label for="email">Your Email Address:</label> 
        <input type="email" name="email" class="form-control" value="<?php echo isset($_POST['name']) ? $_POST['email'] : ''; ?>" /> 
       </div> 
       <div class="form-group"> 
        <label for="message">Your Message:</label> 
        <textarea class="form-control" rows="5" name="message"><?php echo isset($_POST['name']) ? $_POST['message'] : ''; ?></textarea> 
       </div> 
       <div class="text-center"> 
        <input type="submit" name="submit" class="btn btn-success btn-lg" value="Submit"/> 
       </div> 
      </form> 
    <!-- Contact Form Ends --> 
     </div> 

sendemail.php代码

<?php 

    if(isset($_POST["submit"])) {    
     if (!$_POST['name']) { 
      $error="<br />Please enter your name"; 
     }  
     if (!$_POST['subject']) { 
      $error.="<br />Please enter a subject"; 
     }   
     if (!$_POST['email']) { 
      $error.="<br />Please enter your email address"; 
     }   
     if (!$_POST['message']) { 
      $error.="<br />Please enter a message"; 
     }     
     if ($_POST['email']!="" AND !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {   
      $error.="<br />Please enter a valid email address"; 
     }   
     if ($error) { 
      $result='<div class="alert alert-danger"><strong>There were error(s) in your form:</strong>'.$error.'</div>';   
     } else { 
      if (mail("[email protected]", "New Online Message!", "Name: ". $_POST['name']." 
       Name: ".$_POST['name']."    
       Subject: ".$_POST['subject'])) { 
     $result='<div class="alert alert-success text-center"><strong>Thank you!</strong> Please allow 24 to 48 hours for our support team to get back to you. Thank you. </div>';  
     } else {   
      $result='<div class="alert alert-danger">Sorry, there was an error sending your message. Please try again later.</div>';   
     }  
    }  
} 

?> 
+1

只有'!$ _ POST ['name']'(使用'=')才会设置'$ error'。否则,你可以使用'。='附加到'$ error'。你必须首先设置'$ error ='';'。这在一些服务器上工作的原因是因为您禁用了PHP通知。另请注意,您正在将电子邮件头添加到您的电子邮件中,允许任何人使用您的联系表单发送任何其他电子邮件(或者甚至上千封电子邮件)。 – h2ooooooo 2014-09-29 05:49:39

+0

so $ if语句之前的错误??我不明白 – 2014-09-29 05:52:25

+0

头是耶。甚至不知道如何在没有标题的情况下保护这种类型的电子邮件,我相信在这里要求任何人输入内容太多了。无论如何感谢您的支持。 – 2014-09-29 05:55:10

尝试与此代码:

<?php 

    $error = ""; 
     if(isset($_POST["submit"])) {    
     if ($_POST['name'] == "") { 
      $error .="<br />Please enter your name"; 
     }  
     if ($_POST['subject'] == "") { 
      $error.="<br />Please enter a subject"; 
     }   
     if ($_POST['email'] == "") { 
      $error.="<br />Please enter your email address"; 
     }   
     if ($_POST['message'] == "") { 
      $error.="<br />Please enter a message"; 
     }     
     if ($_POST['email']!="" AND !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {   
      $error.="<br />Please enter a valid email address"; 
     }   
     if ($error) { 
      $result='<div class="alert alert-danger"><strong>There were error(s) in your form:</strong>'.$error.'</div>';   
     } else { 
      if (mail("[email protected]", "New Online Message!", "Name: ". $_POST['name']." 
       Name: ".$_POST['name']."    
       Subject: ".$_POST['subject'])) { 
     $result='<div class="alert alert-success text-center"><strong>Thank you!</strong> Please allow 24 to 48 hours for our support team to get back to you. Thank you. </div>';  
     } else {   
      $result='<div class="alert alert-danger">Sorry, there was an error sending your message. Please try again later.</div>';   
     }  
    }  
} 

?> 

您已经定义$ if变量中的错误变量它的作用域仅在if块中。在开始时在if块外定义它。