2014-10-06 2 views
-1

Здравствуйте, я хотел включить скрипт, который запрещает пользователям делать многопользовательскую передачу до сих пор. Хорошо, работает так, что блокирует пользователь перенаправляет на destination.html после отправки одного раза, но я получаю всю информацию, даже когда он получает сообщение об ошибке. Поэтому вопрос в том, что я не знаю, где именно поставить этот код или использовать его для моих нужд:Куда поместить тег if (! Isset) в уже закодированный processform.php

if (!isset($_SESSION['validsubmit']) || !$_SESSION['validsubmit']) { 
     echo "ERROR: Invalid form submission, or form already submitted!"; 
    } else { 
     $_SESSION['validsubmit'] = false; 

    } 

Внутри моей PROCES формы PHP то здесь shoren версия:

<?php 
session_start(); 

require_once('formvalidator.php'); 

if(isset($_POST['form_btn'])) { 
    $validator = new simple_fv; 

    // fields info container 
    $fields = array(); 

    // fill the container with fields data 
    $fields[] = array('index'=>'name', 'label'=>'Name', 'required'=>true, 'max_len'=>25); 
    $fields[] = array('index'=>'surname', 'label'=>'surname', 'required'=>true, 'max_len'=>30); 
    $indexes[] = array('index'=>'email', 'label'=>'E-mail', 'required'=>true, 'type'=>'email', 'max_len'=>200); 
     $fields[] = array('index'=>'phone', 'label'=>'phone number', 'required'=>true, 'type'=>'int', 'min_len'=>4); 

    // validate the fields 
    $validator->formHandle($fields); 

    // get errors 
    $error = $validator->getErrors(); 

    // if errors is not FALSE - print the succesfull message 

if($error) {echo $error;} 
else {if(isset($_POST['name'])) 

$emotion = $_POST['emotion']; 

if($emotion == 'Basic Pack') { 
session_start(); 
$_SESSION['form_finished'] = true; 
header('Location: /destination/basicc.php'); 
} elseif($emotion == 'Deluxe Pack') { 
header('Location: html6.php'); 
} elseif($emotion == 'Premium Pack') { 
header('Location: html7.php'); 
} 

$to = '[email protected]'; 
    $subject = 'NEWLOGO CLIENT FORM'; 
    $headers = 'From: ' . $_POST['email'] . "\r\n" . 'Reply-To: ' . $_POST['email'];  

    $message = 'Name: ' . $_POST['name'] . "\n" . 
       'Surname: ' . $_POST['surname'] . "\n" . 
       'E-mail: ' . $_POST['email'] . "\n" . 
       'Phone: ' . $_POST['phone']. "\n" . 


        mail($to, $subject, $message, $headers); 
    if($_POST['copy'] == 'on') 
    { 
     mail($_POST['email'], $subject, $message, $headers); 
    } } 

} 
?> 

Я хочу сделать так, чтобы при первом отправке пользователь перешел на мою страницу redictet, но во второй раз не просто для того, чтобы показать это эхо "ERROR: Invalid form submission, or form already submitted!", и письмо не нужно отправлять в этом случае.

ответ

1

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

if (isset($_POST['form_btn'])) { 
    if (!isset($_SESSION['validsubmit']) || !$_SESSION['validsubmit']) { 
     echo "ERROR: Invalid form submission, or form already submitted!"; 
    } 
    else { 
     $_SESSION['validsubmit'] = false; 
     $validator = new simple_fv; 
     // ... 
    } 
} 
+0

я просто попробовал ваш ответ, и я получаю «заголовки уже посланные» ошибкой и линия именно там, где начинается первый заголовок в этом случае: 'header (' Location: /destination/basicc.php '); 'кроме этого спасибо –

+0

Это сработало @ Джон Конде, я ошибся, спасибо, очень чувак, это была моя последняя часть для завершения моей формы, у меня хороший день :) –

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