2015-01-19 3 views
0

У меня возникли проблемы с получением моей контактной формы для работы. Я новичок в php, и это первая почтовая программа, которую я создал, поэтому я определенно могу воспользоваться некоторой помощью.php form продолжает давать мне 500 ошибок

Вот мой HTML форма

 <form id="ajax-contact" method="post" action="mailer.php"> 
      <div class="column"> 
       <label for="name">name</label> 
       <input type="text" id="name" name="name" required> 
       <label for="email">email address</label> 
       <input type="email" id="email" name="email" required> 
      </div> 

      <div class="column"> 
       <label for="message">message</label> 
       <textarea id="message" required></textarea> 
      </div> 

      <button type="submit">Send</button> 
     </form> 

Вот мой mailer.php

<?php 
    // My modifications to mailer script from: 
    // http://blog.teamtreehouse.com/create-ajax-contact-form 
    // Added input sanitizing to prevent injection 


    // Only process POST reqeusts. 
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     // Get the form fields and remove whitespace. 
     $name = strip_tags(trim($_POST["name"])); 
$name = str_replace(array("\r","\n"),array(" "," "),$name); 
     $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); 
     $message = trim($_POST["message"]); 


     // Check that data was sent to the mailer. 
     if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      // Set a 400 (bad request) response code and exit. 
      http_response_code(400); 
      echo "Oops! There was a problem with your submission. Please complete the form and try again."; 
      exit; 
     } 


     $recipient = "[email protected]"; 


     $subject = "New message from $name"; 


     $email_content = "Name: $name\n"; 
     $email_content .= "Email: $email\n\n"; 
     $email_content .= "Message:\n$message\n"; 


     $email_headers = "From: $name <$email>"; 


     // Send the email. 
     if (mail($recipient, $subject, $email_content, $email_headers)) { 
      // Set a 200 (okay) response code. 
      http_response_code(200); 
      echo "Thank You!"; 
     } else { 
      // Set a 500 (internal server error) response code. 
      http_response_code(500); 
      echo "Oops! Something went wrong."; 
     } 


    } else { 
     // Not a POST request, set a 403 (forbidden) response code. 
     http_response_code(403); 
     echo "There was a problem with your submission, please try again."; 
    } 
?> 

Я искал для людей с подобными проблемами, и я считаю, что мне нужно добавить что-то с моей электронной почты хоста настройки. Давайте будем честными, хотя, я не знаю, что я делаю. Любая помощь очень ценится!

+1

Откройте журналы сервера и посмотрите, что вызвало ошибку 500er. –

ответ

1

Похоже на форме вы забыли включить имя текстового поля, которое вызывает неопределенный индекс в коде при попытке получить

$_POST['message']

<textarea name="message" id="message" required></textarea> 

Doing выше решен вопрос в тестировании для меня ,

+0

Неопределенные ошибки индекса («ошибка уведомления») не вызывают ошибки HTTP 500. Только Fatal Errors делают это. –

+0

Да, но кажется, что функция почты не нравится, а затем не работает, а в своем коде, если функция почты возвращает false, он установил для вывода 500 ошибок. – ijustin

+0

Да, но обычно веб-сервер не бросает тогда ошибку http 500, просто код ответа будет 500, но тело ответа будет таким же, как и вывод «Ой!» Что-то пошло не так ». Nginx, например, не делает этого, если вы не сообщите ему о вмешательстве в ошибки HTTP. –

Смежные вопросы