0

当表单元素出现错误时,我发现了一个关于表单重定向的精彩示例。在validation.php 中,系统检查是否有错误,如果是真的,它会将用户重定向到表单页面。我的问题是如果我有多个表单元素怎么办?

如您所见,我将 user_name 重命名为 app_name 并添加了一个新变量(adtext),所以现在当两个表单元素都有错误(现在它们不等于某个单词)时,我会收到两条错误消息,但我不知道是什么与 $query_string 变量有关,因此 url 将包含第二个变量及其值。

这是当我单击提交按钮并且 $appname 出现错误时表单页面 (adparameters.php) 的 url 的样子:

/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”,那么重定向后它仍然会填充文本。这也是我想要的第二个对象。

4

2 回答 2

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
于 2012-12-31T12:32:56.730 回答
-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;
于 2012-12-31T12:40:42.817 回答