2013-03-09 5 views
0

Я работаю над скриптом для форм, которые отправляют данные самому себе, чтобы проверять наличие ошибок, если нет ошибок, он использует header() для отправки их на следующую страницу. Есть ли способ, которым я могу отправить данные $ _POST на следующую страницу, а также без повторной отправки формы?

<?php 

if (isset($_POST['submit'])) { 
    $errors = array(); 
    $moo = array(); 

    if (empty($_POST['a'])) { 
     $errors[] = 'You forgot to answer Question 1!<br/>'; 
    } else { 
     $moo = $_POST['a']; 
    } 

    if (empty($_POST['b'])) { 
     $errors[] = 'You forgot to answer Question 2!<br/>'; 
    } 

    if (empty($_POST['c'])) { 
     $errors[] = 'You forgot to answer Question 3!<br/>'; 
    } 

    if (empty($errors)) { 

     $_POST['aids'] = "RAWR"; 
     $url = "http://localhost/test/test.php?page=2"; 
     header("Location: $url"); 
     exit(); 
    } else { 
     foreach ($errors as $error) { 
      echo $error; 
     } 
    } 
} 

echo " 
    <form action=\"test.php?page=1\" method=\"post\"> 
     <input type=\"text\" name=\"a\" value=\"" . $_POST['a'] . "\"> 
     <input type=\"text\" name=\"b\" value=\"" . $_POST['b'] . "\"> 
     <input type=\"text\" name=\"c\" value=\"" . $_POST['c'] . "\"> 
     <input type=\"submit\" name=\"submit\"> 
    </form> 
"; 

?> 
+0

сохранить его в файле или базе данных? – Dave

+0

Вы пытались использовать '.ajax()'? –

+0

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

ответ

-1

попробуйте использовать как действие URL-адрес. Это делает текущую страницу целью:

<form action="" method="post"> 

EDIT. Неверный вопрос. Попробуйте это на первой странице:

<?php 
    if(isset($_POST['submit'])){ 
    // check for errors here... 
    if (empty($errors)) { 
     $valuea = 'a'; 
     $valueb = 'b'; 
     $url = "http://domain/test/test.php?vala=".$valuea."&valb=".$valueb.""; 
     header("Location: $url"); 
     exit(); 
    } 
    }  
?> 

На 2-й странице

<?php 
$valuea = $_GET['vala']; 
$valueb = $_GET['valb']; 
?> 

Это просто передавая значение через URL. В противном случае вам понадобится сеанс или база данных для передачи значений с помощью PHP.

+0

Они уже отправляют его на первую страницу и знают, как это сделать - они спрашивают, как получить эту информацию на второй странице, которую они перенаправляют. – Jon

+0

выполните свою проверку ошибок, а затем выполните перенаправление, если оно выполнено успешно. Или используйте ajax. Или используйте сеанс. Есть много вариантов! – john

+0

Да, но ваш ответ вообще не затрагивает вопрос, вы повторяете выполнение того, что они уже сделали успешно, а не как передать их на вторую страницу. – Jon

0

Вы должны использовать запрос AJAX для проверки на наличие ошибок, а затем отправить форму, если вся информация верна в отношении местоположения $ url.

Но если вы хотите сохранить данные в переменной $ _SESSION без ошибок, вы сможете получить ее на следующей странице.

... 
if (empty($errors)) { 

    $_POST['aids'] = "RAWR"; 
    $url = "http://localhost/test/test.php?page=2"; 
    $_SESSION['post'] = $_POST; 
    header("Location: $url"); 
    exit(); 
} else { 
    foreach ($errors as $error) { 
     echo $error; 
    } 
} 
... 

может даже отправить данные с строки запроса в URL, как

$url = "http://localhost/test/test.php?page=2&data=whatever"; 
0

Ну Есть много способов, которые вы могли бы пойти по этому поводу. Первые, которые приходят на ум, хранят данные в переменной $_SESSION, а затем хранят ее в базе данных ...

Если вы не хотите сильно изменять структуру своего сценария, вместо того, чтобы делать переадресацию один раз данные проверяются только на include() для запуска кода другой страницы -

if (empty($errors)) { 
    ... 
    // this will simply insert the contents of the script and execute it. 
    include('test.php?page=2'); 
} else { 
    ... 
} 
Смежные вопросы