0

I'm working on a script for forms that submits the data to itself to check for errors, if there are no errors it uses header() to send them to the next page. Is there a way I can send the $_POST data to the next page as well without the form being re-submitted?

    <?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>
";

?>
4

3 に答える 3

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";
于 2013-03-09T00:41:18.720 に答える
0

これには多くの方法があります。最初に頭に浮かぶのは、データを$_SESSION変数に格納することであり、次にそれをデータベースに格納することです...

スクリプトの構造をそれほど変更したくない場合は、データが検証されたらリダイレクトする代わりにinclude()、他のページのコードを実行するだけです -

if (empty($errors)) {
  ...
  // this will simply insert the contents of the script and execute it.
  include('test.php?page=2');
} else {
   ...
}
于 2013-03-09T00:44:46.813 に答える
-1

アクション URL として何も使用しないでください。これにより、現在のページがターゲットになります。

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

編集。質問を読み間違えました。最初のページでこれを試してください:

<?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 を使用して値を渡すためのセッションまたはデータベースが必要になります。

于 2013-03-09T00:40:35.890 に答える