在没有提交表格的情况下发送$ _POST?

时间:2013-03-09 00:36:46

标签: php

我正在处理一个脚本,用于将数据提交给自身以检查错误的表单,如果没有错误则使用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>
";

?>

3 个答案:

答案 0 :(得分: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";

答案 1 :(得分:0)

你有很多方法可以解决这个问题。首先想到的是将数据存储在$_SESSION变量中,然后将其存储在数据库中......

如果您不想更改脚本的结构,而不是在验证数据后进行重定向,只需要include()运行其他页面的代码 -

if (empty($errors)) {
  ...
  // this will simply insert the contents of the script and execute it.
  include('test.php?page=2');
} else {
   ...
}

答案 2 :(得分:-1)

尝试不使用任何动作网址。这使得当前页面成为目标:

<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'];
?>

这只是通过网址传递值。否则,您将需要一个会话或数据库来使用PHP传递值。