2015-02-11 3 views
1

При нажатии кнопки отправки браузер переходит на www. ****. Com/contact.php, а страница пуста. Электронная почта также не доставлена. Это мой первый опыт работы с php. Что мне не хватает?PHP Контактная форма wil не отправляется

Вот форма:

<form class="comment-form" action="contact.php" method="POST"> 
 
\t <p class="comment-notes">Your email address will not be published. All fields are required.</p> 
 
\t <p class="comment-form-email"> 
 
\t <label for="author">Name</label> 
 
\t <span class="required">*</span> 
 
\t <input id="author" type="text" class="input-text" name="name"> 
 
\t </p> 
 
\t 
 
    <p class="comment-form-author"> 
 
\t <label for="email">Email</label> 
 
\t <span class="required">*</span> 
 
\t <input id="email" type="text" class="input-text" name="email"> 
 
\t </p> 
 
\t <p class="comment-form-url"> 
 
\t <label for="subject">Subject</label> 
 
\t <span class="required">*</span> 
 
\t <input id="subject" type="text" class="input-text" name="subject"> 
 
\t </p> 
 
\t <p class="comment-form-comment"> 
 
\t <label for="message">Message</label> 
 
\t <textarea name="message" id="message" cols="45" rows="10" class="input-text"></textarea> 
 
\t </p> 
 
\t <p class="form-submit"> 
 
\t <input class="btn btn-md btn-default" name="submit" type="submit" id="button" value="Send"><input type="reset" value="Clear"> 
 
\t </p> 
 
</form> 
 

 
<?php 
 

 
$name = $_POST['name']; 
 
$email = $_POST['email']; 
 
$formcontent = "From: $name\n Message: $message"; 
 
$recipient = "[email protected]"; 
 
$subject = "$subject"; 
 
$mailheader = "From: $email \r\n"; 
 
error_reporting(E_ALL); 
 
ini_set(display_errors, 1); 
 

 
mail($recipient, $subject, $formcontent, $mailheader) or die ("Error!"); 
 
echo "Thank You! We will respond to your inquiry as soon as possible"; " -"<a href='contact.html' style='text-decoration:none;color:#ff0099;'> "Return Home"</a>; 
 

 
?>

+4

возможно дубликат [белый экран РНР смерти] (http://stackoverflow.com/questions/1475297/phps-white-screen-of-death) – Chris

+2

Это последнее «эхо» выглядит странно. Edit: также: '$ message' и' $ subject' никогда не определены –

+0

Поместите PHP в файл, который вы использовали как «действие» вашей формы. Вы используете два отдельных файла. Первая - это HTML-форма. Другой - это PHP, который получает данные из формы. Кроме того, будьте готовы, чтобы эта форма использовалась для инъекций спама. – kainaw

ответ

1

Похоже, ваш PHP не вызывается должным образом, потому что это не вызвано кнопку отправки. При нажатии кнопки отправки выполняется следующий код.

if(isset($_POST['submit'] 
{ 
    // put your PHP code here, this executes when submit is...submitted 
} 

Дайте этому выстрел, это должно помочь вам некоторые.

<?php 
    error_reporting(E_ALL); 
    ini_set(display_errors, 1); 

if(isset($_POST['submit'])) 
{ 
    //Gather the POST info and set them to variables 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 

    // Setup the message and define who will be emailed the info 
    $formcontent = "From: $name\n Message: $message"; 
    $recipient = "[email protected]"; 
    $headers = 'From:' . $email; 


    mail("$recipient", $subject, $formcontent, $headers) or die ("Error!"); 
    echo "Thank You! We will respond to your inquiry as soon as possible! - <a href='contact.html' style='text-decoration:none;color:#ff0099;'>Return Home</a>"; 
} 


?> 

     <form class="comment-form" action="contact.php" method="POST"> 
      <p class="comment-notes">Your email address will not be published. All fields are required.</p> 
      <p class="comment-form-email"> 
      <label for="author">Name</label> 
      <span class="required">*</span> 
      <input id="author" type="text" class="input-text" name="name"> 
      </p> 

      <p class="comment-form-author"> 
      <label for="email">Email</label> 
      <span class="required">*</span> 
      <input id="email" type="text" class="input-text" name="email"> 
      </p> 
      <p class="comment-form-url"> 
      <label for="subject">Subject</label> 
      <span class="required">*</span> 
      <input id="subject" type="text" class="input-text" name="subject"> 
      </p> 
      <p class="comment-form-comment"> 
      <label for="message">Message</label> 
      <textarea name="message" id="message" cols="45" rows="10" class="input-text"></textarea> 
      </p> 
      <p class="form-submit"> 
      <input class="btn btn-md btn-default" name="submit" type="submit" id="button" value="Send"><input type="reset" value="Clear"> 
      </p> 
     </form> 
+0

PHP вызывается всегда, даже если кнопка отправки не запускается. –

+0

yes @IkoTikashi, форма отправляется сама по себе, когда страница загружается. –

+1

@JeanGkol Nope, форма не отправляется, когда страница загружается. Пользователь должен нажать кнопку «Отправить», чтобы отправить форму. Вот почему неплохо использовать код Fata1Err0r. –

0

Можете ли вы подтвердить, что страница + код размещен здесь это contact.php файл?

Попробуйте исправить код PHP первых, эту строку:

echo "Thank You! We will respond to your inquiry as soon as possible"; " -"<a href='contact.html' style='text-decoration:none;color:#ff0099;'> "Return Home"</a>;

должно быть:

echo "Thank You! We will respond to your inquiry as soon as possible"; 
?> 
<a href="contact.html" style="text-decoration:none;color:#ff0099;">Return Home</a> 
<?php 
2

Похоже, эта форма размещения себе? Если это так, я думаю, вы, вероятно, следует использовать

<form class="comment-form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 

htmlspecialchars() является безопасность вещь. Помогает предотвратить некоторые хаки.

+0

Какие хаки могут 'htmlspecialchars()' предотвращать? –

+1

http://www.w3schools.com/php/php_form_validation.asp htmlspecialchars() поможет в атаках XSS – Jared

+1

Но 'htmlspecialchars()' необходимо, только если вы используете PHP_SELF в своем действии. Я бы просто использовал 'action =" contact.php ". –

0

в вашем выражении эха, у вас плохой синтаксис. Попробуйте

echo "Thank You! We will respond to your inquiry as soon as possible - <a href='contact.html' style='text-decoration:none;color:#ff0099;'>\"Return Home\"</a>"; 
0

У вас есть какие-то серьезные "ошибки" в вашем PHP:

$message не определен

$subject не определен

Это ini_set('display_errors', 1);, не ini_set(display_errors, 1);

Ваш echo строка недействительна, удалите дополнительную часть HTML

Ваш окончательный код должен lõoke так:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 
$formcontent = "From: $name\n Message: $message"; 
$recipient = "[email protected]"; 
$mailheader = "From: $email \r\n"; 

mail($recipient, $subject, $formcontent, $mailheader) or die ("Error!"); 
echo "Thank You! We will respond to your inquiry as soon as possible"; 
?> 
<a href='contact.html' style='text-decoration:none;color:#ff0099;'> "Return Home"</a> 

Вы также можете прочитать о форме проверки

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