2013-03-01 5 views
0

HTML кодJS сообщение PHP вернуться на HTML странице

<div id="fourmstyle" class="fourm"> 

<form action="scripts/mail.php" method="post"> 

    <label for="name">Your Name <required>*</required> 
     </label> 
    <input type="text" name="Name" id="Name" placeholder="Joe Bloggs"> 

    <label for="email">Your Email <required>*</required> 
     </label> 
    <input type="text" name="Email" id="Email" placeholder="[email protected]"> 

    <label for="telephone">Telephone 
     </label> 
    <input type="text" name="Telephone" id="Telephone"> 

    <label for="type">Type 
     </label> 
     <select name="Type">     
      <option value="Booking" selected>Booking</option> 
      <option value="B&B">B&amp;B</option> 
      <option value="Question">Question</option> 
      <option value="General">General</option> 
      <option value="Website Feedback">Website Feedback</option> 
     </select></p> 

     <label for="messsage">Message <required>*</required> 
      </label> 
     <textarea name="Message" id="Message" rows="5" cols="25"> 
     </textarea></p> 

     <label for="btn">&nbsp;</label> 
     <button type="submit" class="button">Submit 
     </button> 
     <br>&nbsp;<requireddescription> *(indicates that the information is required) 
     </requireddescription> 
</form> 

PHP код

<?php 
if(isset($_POST)) 
{ 
    $name = (isset($_POST['Name'])) ? strip_tags($_POST['Name']) : NULL; //if name is set, strip html tags, and return it, otherwise set the string as NULL. 
    $email = (isset($_POST['Email'])) ? strip_tags($_POST['Email']) : NULL; //same as above. 
    $telephone = (isset($_POST['Telephone'])) ? preg_replace('~[^0-9\-]~','',$_POST['Telephone']) : NULL; //if telephone is set, remove any characters that are not a number, or a dash, othewise set as NULL. 
    $type = (isset($_POST['Type'])) ? strip_tags($_POST['Type']) : NULL; //strip tags. 
    $message = (isset($_POST['Message'])) ? strip_tags($_POST['Message']) : NULL; //strip tags. 
    if(empty($name) || empty($email) || empty($message)) 
    { 
     //name, email, and message are required fields, if they are empty, tell the user to go back and fill them in. 
     echo '<script type="text/javascript"> alert ("Please go back and fill in all required lines"); </script>'; 
    } 
    else 
    { 
     //if the fields are NOT empty, proceed with the mailing. 
     $formcontent=" From: $name \n Type: $type \n\n Message: $message \n\n Telephone: $telephone"; 
     $recipient = "[email protected]"; 
     $subject = "Website Contact Form: $type"; 
     $mailheader = "From: $email \r\n"; 

     if(mail($recipient, $subject, $formcontent, $mailheader)) 
     { 
      //if mail is sent to the SMTP server successfully, echo 'thank you'. 
      echo '<script type="text/javascript"> alert ("Thankyou '.$name.' we have submitted your message and we will get back to you as soon as possible, if you need to speak to us in the mean time please call 01983 872244 "); </script>'; 
     } 
     else 
     { 
      //otherwise, tell the user it did not go through. 
      echo '<script type="text/javascript"> alert ("I am sorry but there has been an error submitting your request please try again or call us on 01983 872244"); </script>'; 
     } 
    } 
} 
?> 

Ok мой код выше работает довольно хорошо, и я JS всплывающие предупреждения. Однако, когда я одобряю оповещение JS, он возвращает меня к скрипту mail.php, а не к HTML-странице, на которой он возник из-за того, как я могу исправить это?

+0

Если вы просто хотите вернуться один раз, попробуйте добавить 'window.history.back()' после уведомления о коде , – Raad

+0

attach 'return false;' в конце 'alert();' – zarkoz

+0

Использовать AJAX ... ваш пользователь никогда не покинет страницу ... и вы должны обрабатывать предупреждения в том же скрипте js, который вызывает AJAX, а не файл PHP. – zgr024

ответ

0

Это должно помочь решить вашу проблему ... но в будущем попробуйте вызов AJAX.

if(mail($recipient, $subject, $formcontent, $mailheader)) 
     { 
      //if mail is sent to the SMTP server successfully, echo 'thank you' and return to previous page. 
      echo '<script type="text/javascript"> alert ("Thankyou '.$name.' we have submitted your message and we will get back to you as soon as possible, if you need to speak to us in the mean time please call 01983 872244 "); window.history.back(); </script>'; 
     } 
     else 
     { 
      //otherwise, tell the user it did not go through. 
      echo '<script type="text/javascript"> alert ("I am sorry but there has been an error submitting your request please try again or call us on 01983 872244"); window.history.back(); </script>'; 
     } 

EDIT

забыл включить первый экземпляр

if(empty($name) || empty($email) || empty($message)) 
    { 
     //name, email, and message are required fields, if they are empty, tell the user to go back and fill them in and send them back. 
     echo '<script type="text/javascript"> alert ("Please go back and fill in all required lines"); window.history.back()</script>'; 
    } 
0

Когда вы отправляете на mail.php, mail.php становится новой страницей, на которой находится ваш пользователь. Если вы хотите, чтобы они все еще находились на странице, с которой они ее называли, вам нужно либо отправить ее через AJAX, либо сообщить браузеру вернуться к странице, с которой был вызван сценарий. Для того, чтобы сделать это второй путем, добавьте в ваше эхо сценария:

window.history.back() 
+0

, хотя я уверен, что AJAX - это гораздо лучшее решение, без сомнения, я просто попрошайничаю вступить в мир программирования и не чувствую себя вполне довольным, но не могли бы вы просто показать мне, как бы вы добавили их в эхо как я пытался и борется ... –

+0

echo ' '; – DiMono

0

Это зависит от того, что вы сделали в вашей HTML странице:

  1. Если PHP был вызван с помощью AJAX, то вам нужно добавить return false в функцию javascript, которая инициировала этот вызов ajax.

  2. Если у вас есть форма и форма представления через регулярную обратную ссылку на URL-адрес действия, так это то, как вы обрабатывали эту страницу PHP, тогда вам нужно либо добавить перенаправление в PHP обратно на эту страницу. Хранение этого предупреждения в сеансе поэтому он не теряется, ИЛИ бросает какой-то HTML после этого PHP.

+0

Вы не могли показать мне, что вы имеете в виду? msgstr "добавить перенаправление в PHP обратно на эту страницу WHILE сохранение этого сообщения предупреждения в сеансе, чтобы он не потерялся"? –

+0

или, вы можете показать нам свой html и javascript, чтобы я не мог догадаться. – Kristian

+0

Я добавил код HTML выше кода JS буквально только один ряд строк, встроенных в документ mail.php, и я думаю, что стиль CSS не имеет отношения к этой проблеме, надеюсь, что это нормально и спасибо за вашу помощь ... –

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