2013-09-10 3 views
1

Недавно я начал изучать PHP и у меня возникли проблемы с контактной формой.PHP Contact Form - форму, заменяемую сообщением?

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

Кроме того, я хотел бы получить сообщение «Сообщение отправлено!». для замены всей контактной формы при ее отправке. Как это сделать, если не ссылаться на другую страницу?

Код следующее:

<form method="POST" action="index.php"> 
    <input name="name" type="text" placeholder="Name"> 
    <input name="email" type="email" required placeholder="Email"> 
    <input name="subject" type="text" placeholder="Subject"> 
    <textarea name="message" rows="15" required placeholder="Message"></textarea> 
    <input name="submit" type="submit" value="Send"> 
</form> 

<?php 
    if(isset($_POST['submit'])) 
    { 
    $name_field=$_POST['name']; 
    $email_field=$_POST['email']; 
    $subject_field=$_POST['subject']; 
    $message_field=$_POST['message']; 
    $to="[email protected]"; 
    $from="[email protected]"; 
    $subject="Contact Form Message"; 
    $body="Name: $name_field\n Email: $email_field\n Subject: $subject_field\n Message:\n $message_field"; 
    mail($to,$subject,$body,$from); 
    echo "<p>Message sent!</p>"; 
    } 
    else 
    { 
    echo "<p>An error occured. Please try again.</p>"; 
    } 
?> 

Большое спасибо за любую помощь вообще. Кроме того, если у вас есть идеи, как сделать код лучше, чище или эффективнее, пожалуйста, расскажите!

+1

Вы забыли сказать нам, что на самом деле ломает. –

+0

Примечание: вы можете использовать форму action = "" вместо hardcoding имя страницы. – Nilpo

+0

Да, извините, я только что редактировал вопрос! – Inventor

ответ

1

Вы не сказали, что не работает, но чтобы не отображать форму, если она была отправлена, вы хотите переместить форму в php и только распечатать ее, если форма не была отправлена.

Кроме того, для некоторых дальнейшего чтения, чтобы помочь вам, есть очень хорошие видео уроки здесь, это один именно на создание контактной формы :-D http://thenewboston.org/watch.php?cat=11&number=100

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

<?php 

//if the form hasn't been submitted yet, print the form. 
if (!isset($_POST['submit'])){ 
print <<<END 
<form method="POST" action="index.php"> 
    <input name="name" type="text" placeholder="Name"> 
    <input name="email" type="email" required placeholder="Email"> 
    <input name="subject" type="text" placeholder="Subject"> 
    <textarea name="message" rows="15" required placeholder="Message"></textarea> 
    <input name="submit" type="submit" value="Send"> 
</form> 
END; 
} 

//if the form has been submitted. 
if(isset($_POST['submit'])) 
{ 
$name_field=$_POST['name']; 
$email_field=$_POST['email']; 
$subject_field=$_POST['subject']; 
$message_field=$_POST['message']; 
$to="[email protected]"; 
$subject="Contact Form Message"; 
$body="Name: $name_field\n Email: $email_field\n Subject: $subject_field\n Message:\n $message_field"; 
$headers = "From: [email protected]"; 

    if(!mail($to,$subject,$body,$headers)){ 
     echo 'failed !!'; 
    } 
    else{ 
     echo "<p>Message sent!</p>"; 
    } 
} 
+0

Спасибо, это звучит умно! Проблема с формой заключается в том, что она не отправляет электронное письмо и не перекликается с сообщением об ошибке. – Inventor

+0

Ну, похоже, вы повторяете сообщение об ошибке, если форма не была отправлена ​​.... так что вы получите сообщение об ошибке ниже формы при первой загрузке (прежде чем нажать кнопку «Отправить»)? – Joeme

+0

Да, я понимаю. – Inventor

0

Попробуйте это, надеюсь, что это будет работать для вас:

<? if (!isset($_POST['submit'])) 
{?> 
<form method="POST" action="test.php"> 
<input name="name" type="text" placeholder="Name"> 
<input name="email" type="email" required placeholder="Email"> 
<input name="password" type="password" required placeholder="Password"> 
<textarea name="message" rows="15" required placeholder="Message"></textarea> 
<input name="submit" type="submit" value="Send"> 
</form> 
<? 
} 
if(isset($_POST['submit'])) 
$name_field=$_POST['name']; 
$email_field=$_POST['email']; 
$subject_field=$_POST['subject']; 
$message_field=$_POST['message']; 
$to="[email protected]"; 
$from="[email protected]"; 
$subject="Contact Form Message"; 
$body="Name: $name_field\n Email: $email_field\n Subject: $subject_field\n Message:\n $message_field"; 
mail($to,$subject,$body,$from); 
if($body) 
echo "<p>Message sent!</p>"; 
if(!$body) 
{ 
echo "<p>An error occured. Please try again.</p>"; 
} 
} 
?> 
Смежные вопросы