2014-01-13 2 views
0

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

это мой PHP

<? php 
if (isset($_POST['email'])) { 
    $email_to = "[email protected]"; 
    $email_subject = "Your email subject line"; 

    function died($error) { 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 
    // validation expected data exists 
    if (!isset($_POST['first_name']) || !isset($_POST['last_name']) || !isset($_POST['email']) || !isset($_POST['telephone']) || !isset($_POST['comments'])) { 
     died('We are sorry, but there appears to be a problem with the form you submitted.'); 
    } 
    $first_name = $_POST['first_name']; // required 
    $last_name = $_POST['last_name']; // required 
    $email_from = $_POST['email']; // required 
    $telephone = $_POST['telephone']; // not required 
    $comments = $_POST['comments']; // required 
    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if (!preg_match($email_exp, $email_from)) { 
     $error_message. = 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if (!preg_match($string_exp, $first_name)) { 
     $error_message. = 'The First Name you entered does not appear to be valid.<br />'; 
    } 
    if (!preg_match($string_exp, $last_name)) { 
     $error_message. = 'The Last Name you entered does not appear to be valid.<br />'; 
    } 
    if (strlen($comments) < 2) { 
     $error_message. = 'The Comments you entered do not appear to be valid.<br />'; 
    } 
    if (strlen($error_message) > 0) { 
     died($error_message); 
    } 
    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type", "bcc:", "to:", "cc:", "href"); 
     return str_replace($bad, "", $string); 
    } 
    $email_message. = "First Name: ".clean_string($first_name)."\n"; 
    $email_message. = "Last Name: ".clean_string($last_name)."\n"; 
    $email_message. = "Email: ".clean_string($email_from)."\n"; 
    $email_message. = "Telephone: ".clean_string($telephone)."\n"; 
    $email_message. = "Comments: ".clean_string($comments)."\n"; 
    $headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email_from."\r\n".'X-Mailer: PHP/'.phpversion();@mail($email_to, $email_subject, $email_message, $headers); 
    echo "We have received your enquiry. We will contact you soon."; 
} ?> 

Я использую только основную контактную форму. Спасибо за любую помощь!

+1

Полезно использовать сессию здесь. –

+0

Вы называете форму Ajax или используете страницу отправки? –

+0

jawascwipt мой друг. –

ответ

3

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

$_SESSION['IS_FORM_SUBMIT']=true; 

и по вашему мнению, вы можете проверить:

if(isset($_SESSION['IS_FORM_SUBMIT']) && $_SESSION['IS_FORM_SUBMIT']===true){ 
    // SHOW FORM 
}else{ 
    //SHOW MESSAGE 
} 
0

Также можно установить переадресацию с параметром $_GET. Если я могу дать небольшой намек: когда вы проверяете адрес электронной почты, проверяйте только «@» и действительные символы. Вы также проверяете расширение, но, возможно, в будущем будет расширение с 5 символами или более.

+0

Он мог использовать проверку типа поля HTML5 как первый фильтр ''. На стороне сервера существует много регулярных выражений для проверки адреса электронной почты, но я предлагаю упростить почту с помощью простого регулярное выражение, подобное *^[A-Z0-9 ._% + -] + @ [A-Z0-9 .-] + \. [AZ] {2,5} $ * –

+0

Я согласен с вами в том, что вы должны использовать 'type =" email "(обратите внимание на 'e'), но что, если расширение домена someones: '.com.tr'? Ваше регулярное выражение не будет выполнено, и они не смогут правильно зарегистрировать/заполнить форму? Я уверен, что они оставят страницу и никогда не вернутся. – GuyT

+0

Вы правы. Это просто пример. Существует много правильных регулярных выражений. Существуют регулярные выражения, которые соответствуют IP-адресам, localhost и т. Д. Но обычно это не полезно для производственной среды. Спасибо за исправление. –

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