PHP Email Форма Спасибо Примечание - PullRequest
0 голосов
/ 06 мая 2011

После долгих болей и страданий у меня теперь есть рабочая контактная форма PHP Email.Единственное, чего не хватает, - это благодарственное письмо или сообщение.Кто-нибудь может мне помочь?

<form name="email" method="post">
  <p>
    <label for="name">Full Name</label>
    <input type="text" name="name" id="name">
  </p>
  <p>
    <label for="email">Email Address</label>
    <input type="text" name="email" id="email">
  </p>
  <p>
    <label for="phone">Phone Number</label>
    <input type="text" name="phone" id="phone">
  </p>
  <p>
    <label for="subject">Subject</label>
    <input type="text" name="subject" id="subject">
  </p>
  <p>
    <label for="message">Message<br>
    </label>
    <textarea name="message" id="message" cols="45" rows="5"></textarea>
  </p>
  <p><input type="submit" name="send" id="send" value="Submit"><input type="reset" name="send" id="send" value="Reset">
  </p>
</form>


<?php  

// Get the Variables
  $name = $_POST['name'];
  $visitor_email = $_POST['email'];
  $phone = $_POST['phone'];
  $subject = $_POST['subject'];
  $message = $_POST['message'];


// Validate against spammers
function IsInjected($str)
{
    $injections = array('(\n+)',
           '(\r+)',
           '(\t+)',
           '(%0A+)',
           '(%0D+)',
           '(%08+)',
           '(%09+)'
           );

    $inject = join('|', $injections);
    $inject = "/$inject/i";

    if(preg_match($inject,$str))
    {
      return true;
    }
    else
    {
      return false;
    }
}

if(IsInjected($visitor_email))
{
    echo "Bad email value!";
    exit;
}


// Compose the Email
    $email_from = 'a@b.com';  // Set a valid email address that the form can use

    $email_subject = "New Form submission - $subject";  //  Change the message subject here

    $email_body = "You have received a new message from $name ($phone) .\n Here is the message:\n $message";


// Send The Email
  $to = "a@b.com";  // Set a valid email address to send the form to

  $headers = "From: $email_from \r\n";

  $headers .= "Reply-To: $visitor_email \r\n";

  mail($to,$email_subject,$email_body,$headers);

?>

Ответы [ 2 ]

2 голосов
/ 06 мая 2011
if(mail($to,$email_subject,$email_body,$headers)){
    echo "Thanks for your mail...";
}
0 голосов
/ 06 мая 2011

очень просто, функция mail () возвращает true / false, поэтому, используя это:

echo mail($to, $email_subject, $email_body, $headers) ? 'Mail send' : 'Failed to send mail';

отобразит результат на экране.Однако вы можете захотеть добавить действие формы над формой, так как сообщения не очень часто размещаются под ним.Также вы можете использовать это:

if($_SERVER['REQUEST_METHOD'] == "POST" && !IsInjected($visitor_email)) {
  // insert form action here
} else {
  if(IsInjected($visitor_email)) {
     echo "False e-mail address supplied
  }
  // add form HTML code here (outside PHP tags ofcourse
}

В этом случае вы сначала проверяете, отправляется ли пост-запрос (и адрес электронной почты не ложный), если это так: выполните действие отправки.В противном случае отправьте сообщение об ошибке для ложного сообщения электронной почты и отобразите форму.

Конечно, это не надежный пример, вам придется поработать самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...