2013-03-09 59 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 2013-03-09 00:38:53

+0

你试过使用'.ajax()'吗? – 2013-03-09 00:40:32

+0

在JS中做错误检查。或者,如果想要scrictly使用PHP,可以将它们保存在会话中并传递。或者,建议的方法是进行错误检查并使用同一文件中的数据。 – Jon 2013-03-09 00:41:31

回答

-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传递值。

+0

他们已经提交到第一页,并知道如何做到这一点 - 他们问如何获得他们重定向到的第二页上的信息。 – Jon 2013-03-09 00:42:38

+0

做你的错误检查,然后做一个重定向,如果它成功。或者使用ajax。或者使用会话。有很多选择! – john 2013-03-09 00:44:01

+0

是的,但你的回答根本不能解决问题,你重申他们已经成功完成的事情,而不是如何将它们传递给第二页。 – Jon 2013-03-09 00:45:49

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 = "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 { 
    ... 
}