2013-11-16 2 views
4

у меня есть небольшой формы в HTML, как это:PHP отправить почту и показать сообщение об успешном в одной и той же странице

<form id="contact" action="contact.php" method="post"> 
    <table class="contact" width="400" border="0" cellspacing="2" cellpadding="0"> 
    <tr> 
     <td >Your name:</td> 
     <td ><input name="name" type="text" id="name" size="32"></td> 
    </tr> 
    <tr> 
     <td>Email address:</td> 
     <td><input name="email" type="text" id="email" size="32"></td> 
    </tr> 
    <tr> 
     <td>Comment:</td> 
     <td> 
     <textarea name="comment" cols="45" rows="6" id="comment" ></textarea> 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2" style="text-align:center;"> 
     <input type="submit" value="Submit" style="padding: 3px 22px;" /> 
     </td> 
    </tr> 
    </table> 
</form> 

В contact.php файле у меня есть такой код:

if (isset($_POST['submit'])) 
    { 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $ToEmail = '[email protected]'; 
     $EmailSubject = 'Site contact form '; 
     $mailheader = "From: ".$_POST["email"]."\r\n"; 
     $mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
     $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
     $MESSAGE_BODY = "Name: ".$_POST["name"]."<br>"; 
     $MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"; 
     $MESSAGE_BODY .= "Subject:".$_POST['subject']."<br />"; 
     $MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>"; 
     mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
    } 
    ?> 

Теперь этот работает нормально. Но когда пользователь нажимает кнопку отправки, он просто перенаправляется в файл contact.php. Я хочу, чтобы, когда пользователь нажмет на кнопку, он отобразит сообщение об успешном завершении в том же файле html в виде лайтбокса, и сообщение также будет отправлено. Так может кто-нибудь сказать мне, как это сделать? Любая помощь и предложения будут действительно заметны. Благодаря

Update

У меня есть два разных файла. Форма находится внутри «contact.html», а действие формы - «contact.php», и я хочу показать сообщение «success» и «failure» на странице «contact.html», не переходя в «contact.php».

+3

Использование Ajax ........ http://api.jquery.com/jQuery. ajax/ –

+0

@MohammadAdil, сделайте свой комментарий ответом, чтобы его можно было принять. :) –

ответ

0

Try This

<html> 
<head> 
</head> 
<body> 
<form id="contact" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <table class="contact" width="400" border="0" cellspacing="2" cellpadding="0"> 
    <tr> 
     <td >Your name:</td> 
     <td ><input name="name" type="text" id="name" size="32"></td> 
    </tr> 
    <tr> 
     <td>Email address:</td> 
     <td><input name="email" type="text" id="email" size="32"></td> 
    </tr> 
    <tr> 
     <td>Comment:</td> 
     <td> 
     <textarea name="comment" cols="45" rows="6" id="comment" ></textarea> 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2" style="text-align:center;"> 
     <input type="submit" value="Submit" style="padding: 3px 22px;" /> 
     </td> 
    </tr> 
    </table> 
</form> 
<?php 
    if(isset($_POST)) 
    { 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $ToEmail = '[email protected]'; 
     $EmailSubject = 'Site contact form '; 
     $mailheader = "From: ".$_POST["email"]."\r\n"; 
     $mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
     $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
     $MESSAGE_BODY = "Name: ".$_POST["name"]."<br>"; 
     $MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"; 
     $MESSAGE_BODY .= "Subject:".$_POST['subject']."<br />"; 
     $MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>"; 
     if(mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader)) 
     { 
       echo "success "; 
     } 
    else 
    { 
     echo "Failure"; 
    } 
    } 


?> 
</body> 
</html> 
3

Попробуйте что-нибудь подобное на вашем contact.php

<?php 
if (isset($_POST['submit'])) { 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $ToEmail = '[email protected]'; 
     $EmailSubject = 'Site contact form '; 
     $mailheader = "From: ".$_POST["email"]."\r\n"; 
     $mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
     $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
     $MESSAGE_BODY = "Name: ".$_POST["name"]."<br>"; 
     $MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"; 
     $MESSAGE_BODY .= "Subject:".$_POST['subject']."<br />"; 
     $MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>"; 
     if(mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader)) 
     { 
     echo "<script>alert('Mail was sent !');</script>"; 
     echo "<script>document.location.href='contact.php'</script>"; 
     } 
     else 
     { 
     echo "<script>alert('Mail was not sent. Please try again later');</script>"; 
     } 
    } 
Смежные вопросы