【问题标题】:$error is undefined in php form$error 在 php 形式中未定义
【发布时间】:2017-05-16 15:35:57
【问题描述】:

正如标题所暗示的,我在 php 中有一个简单的表单,它不断给我一个对象 $error 的未定义错误。我尝试将其全局声明并将其设置为 null,但所做的只是防止任何错误日志。代码如下,谢谢!

<?php


$siteOwnersEmail = 'myemail@yahoo.com';


if($_POST) {

   $name = trim(stripslashes($_POST['contactName']));
   $email = trim(stripslashes($_POST['contactEmail']));
   $subject = trim(stripslashes($_POST['contactSubject']));
   $contact_message = trim(stripslashes($_POST['contactMessage']));

   // Check Name
    if (strlen($name) < 2) {
    $error['name'] = "Please enter your name.";
}
    // Check Email
if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
    $error['email'] = "Please enter a valid email address.";
}
// Check Message
if (strlen($contact_message) < 15) {
    $error['message'] = "Please enter your message. It should have at least 15 characters.";
}
  // Subject
  if ($subject == '') { $subject = "Contact Form Submission"; }


 // Set Message
  $message .= "Email from: " . $name . "<br />";
  $message .= "Email address: " . $email . "<br />";
  $message .= "Message: <br />";
  $message .= $contact_message;
  $message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />";

  // Set From: header
  $from =  $name . " <" . $email . ">";

  // Email Headers
    $headers = "From: " . $from . "\r\n";
    $headers .= "Reply-To: ". $email . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";


   if (!$error) {

  ini_set("sendmail_from", $siteOwnersEmail); // for windows server
  $mail = mail($siteOwnersEmail, $subject, $message, $headers);

    if ($mail) { echo "OK"; }
  else { echo "Something went wrong. Please try again."; }

} # end if - no validation error

else {

    $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
    $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
    $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;

    echo $response;

} # end if - there was a validation error

}

?>

【问题讨论】:

  • 在定义电子邮件后定义 $error 以避免此类错误

标签: php html ajax forms


【解决方案1】:

将错误变量声明为数组。将这些新行添加到您的代码中以进行修复

if($_POST) {
$error = array();#declare error variable   

 if (!isset($error)) {#check if we have an error message of some kind
     #proceed

【讨论】:

    【解决方案2】:

    创建 $error 作为空白数组。使用下面的代码。

        <?php
    
    
    $siteOwnersEmail = 'myemail@yahoo.com';
    $error=array();
    
    if(!empty($_POST)) {
    
       $name = trim(stripslashes($_POST['contactName']));
       $email = trim(stripslashes($_POST['contactEmail']));
       $subject = trim(stripslashes($_POST['contactSubject']));
       $contact_message = trim(stripslashes($_POST['contactMessage']));
    
       // Check Name
        if (strlen($name) < 2) {
        $error['name'] = "Please enter your name.";
    }
        // Check Email
    if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
        $error['email'] = "Please enter a valid email address.";
    }
    // Check Message
    if (strlen($contact_message) < 15) {
        $error['message'] = "Please enter your message. It should have at least 15 characters.";
    }
      // Subject
      if ($subject == '') { $subject = "Contact Form Submission"; }
    
    
     // Set Message
      $message .= "Email from: " . $name . "<br />";
      $message .= "Email address: " . $email . "<br />";
      $message .= "Message: <br />";
      $message .= $contact_message;
      $message .= "<br /> ----- <br /> This email was sent from your site's contact form. <br />";
    
      // Set From: header
      $from =  $name . " <" . $email . ">";
    
      // Email Headers
        $headers = "From: " . $from . "\r\n";
        $headers .= "Reply-To: ". $email . "\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
    
       if (!$error) {
    
      ini_set("sendmail_from", $siteOwnersEmail); // for windows server
      $mail = mail($siteOwnersEmail, $subject, $message, $headers);
    
        if ($mail) { echo "OK"; }
      else { echo "Something went wrong. Please try again."; }
    
    } # end if - no validation error
    
    else {
    
        $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
        $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
        $response .= (isset($error['message'])) ? $error['message'] . "<br />" : null;
    
        echo $response;
    
    } # end if - there was a validation error
    
    }
    
    ?>
    

    【讨论】:

    • 我很欣赏代码,但仍然得到相同的结果。一旦 $error 被声明为 null、'' 或 array();,错误日志中不会打印任何内容,但我继续在表单提交时收到回显错误消息。还有其他方法吗?
    猜你喜欢
    • 1970-01-01
    • 2020-05-17
    • 2018-12-03
    • 2015-10-25
    • 1970-01-01
    • 2017-12-12
    • 2022-07-27
    • 2014-06-14
    • 2016-04-20
    相关资源
    最近更新 更多