当表单元素出错时,我在表单重定向上找到了wonderful example。在validation.php中,系统检查是否存在错误,如果是,则将用户重定向到表单页面。 我的问题是,如果我有多个表单元素,该怎么办?
如您所见,我将user_name重命名为app_name,并添加了一个新变量(adtext),所以现在当两个表单元素都有一些错误(现在它们不等于某个单词)时,我收到两条错误消息,但我不知道知道如何处理$ query_string变量,因此url将包含第二个变量及其值。
当我点击提交按钮并且$ appname出现错误时,这就是表单页面的网址(adparameters.php)的样子:
/adparameters.php?appname=aa&error=App%20name%20is%20requiredAd%20text%20is%20required
<?php
# validate.php
$appname = trim($_POST['appname']);
$adtext = trim($_POST['adtext']);
$error = '';
if ($appname != 'myapp') $error = 'App name is required<br />';
if ($adtext != 'mytext') $error = $error . 'Ad text is required<br />';
$query_string = '?appname=' . $appname;
$server_dir = $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/';
header('HTTP/1.1 303 See Other');
if ($error != '') {
// Back to register page
$next_page = 'adparameters.php';
// Add error message to the query string
$query_string .= '&error=' . $error;
// This message asks the server to redirect to another page
header('Location: http://' . $server_dir . $next_page . $query_string);
}
// If Ok then go to confirmation
else $next_page = 'confirmation.php';
/*
Here is where the PHP sql data insertion code will be
*/
// Redirect to confirmation page
header('Location: http://' . $server_dir . $next_page . $query_string);
?>
这段代码的优点在于,如果我在第一个输入类型对象中键入内容并且它不等于'myapp',它仍然在重定向后填充文本。这也是我想要的第二个对象。
答案 0 :(得分:1)
最佳做法是将它们发送到$ _SESSION。
session_start();
$_SESSION['form'] = array();
$_SESSION['form']['myapp'] = 'App Error Code';
$_SESSION['form']['adtext'] = 'AdText Error Code';
然后在新页面上,您将获得值作为数组;
session_start();
$form_error = $_SESSION['form']['myapp'];
$form_error = $_SESSION['attext']['myapp'];
如果您坚持使用GET参数,为什么不用&
字符附加它们。
?field1=one&field2=two
答案 1 :(得分:-2)
我不会按照你这样做的方式去做,但如果你想要它就像改变一些事情那样
if ($appname != 'myapp') $error = 'App name is required<br />';
if ($adtext != 'mytext') $error .= 'Ad text is required<br />';//note contatenation
$query_string = '?appname=' . $appname .'&addtext='.$adtext;