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