0

我的网站上有一个 ajax 驱动的联系表,链接在这里

我有两个问题。

首先,我不确定为什么名称字段的错误检查不起作用,我的代码似乎是正确的(逻辑明智)但它仍然没有触发。

其次,我不知道如何在表单中添加更多字段。例如,添加Company Name用户输入和发送电子邮件。我尝试添加像$company下面的代码这样的值,但我得到这个错误,我无法将这么多变量传递到$mail:/尝试通过反复试验学习,感谢任何帮助!

这是我的代码:

<?php

include dirname(dirname(__FILE__)).'/mail.php';

error_reporting (E_ALL ^ E_NOTICE);

$post = (!empty($_POST)) ? true : false;

if($post)
{
  include 'email_validation.php';

  $name = stripslashes($_POST['name']);
  $email = trim($_POST['email']);
  $subject = 'Contact Form: Inquiry from corporate website';
  $message = stripslashes($_POST['message']);

  $error = '';

  // Check name

  if(!$name || strlen($name) < 1)
  {
    $error .= 'Please enter your name.<br />';
  }

  // Check email

  if(!$email)
  {
    $error .= 'Please enter an e-mail address.<br />';
  }

  if($email && !ValidateEmail($email))
  {
    $error .= 'Please enter a valid e-mail address.<br />';
  }

  // Check message (length)

  if(!$message || strlen($message) < 10)
  {
    $error .= "Please enter your message. It should have at least 10 characters.<br />";
  }


  if(!$error)
  {
    $mail = mail(CONTACT_FORM, $subject, $message,
     "From: ".$name." <".$email.">\r\n"
    ."Reply-To: ".$email."\r\n"
    ."X-Mailer: PHP/" . phpversion());


    if($mail)
    {
      echo 'OK';
    }

  }
  else
  {
    echo '<div class="notification_error">'.$error.'</div>';
  }

}
?>

这是我连接到 php 的 html 表单:

<form id="contactForm" action="">
  <input type="text" name="name" value="Name *" title="Name *" />
  <input type="text" name="email" value="Email *" title="Email *" />

  <textarea name="message" id="message" title="Message *">Message *</textarea>

  <div class="clear"></div>

  <input type="reset" class="btn btn_clear" value="Clear form" />
  <input type="submit" class="btn btn_blue btn_send" value="Send message!" />
  <div class="clear"></div>
</form>
4

2 回答 2

0

关于名称的验证:

不要做

if(!$name || strlen($name) < 1)
{
    $error .= 'Please enter your name.<br />';
}

改为这样做:

if((!(isset($_POST['name'])) || strlen($name) < 1)
{
    $error .= 'Please enter your name.<br />';
}

如果 $name 未定义,strlen 不会做太多事情。但是在尝试对发布的名称执行 strlen 之前,您实际上应该这样做。

另外,你不能添加

$company

进入

$mail

函数,因为您很可能将其用作 mail 函数的参数,而不是将其附加到 $message 变量中。

你也应该缩进你的代码,这太可怕了。

于 2013-04-23T16:01:13.183 回答
0

这就是放入 mail.php 的内容,这就是为什么有一个 CONTACT_FORM

<?php
   // Where will you get the forms' results?
      define("CONTACT_FORM", 'dannyisaninja@gmail.com');
?>
于 2013-04-23T16:04:27.513 回答