0

フォーム要素にエラーがある場合のフォームのリダイレクトに関する素晴らしい例を見つけました。validation.php では、システムはエラーがあるかどうかをチェックし、それが true の場合、ユーザーをフォーム ページにリダイレクトします。私の質問は、複数のフォーム要素がある場合はどうなりますか?

ご覧のとおり、user_name の名前を app_name に変更し、新しい変数 (adtext) を追加したので、両方のフォーム要素に何らかのエラーがある場合 (現在は特定の単語と等しくない)、2 つのエラー メッセージが表示されますが、何が原因かわかりません。 $query_string 変数を処理するため、URL には 2 番目の変数とその値も含まれます。

これは、フォーム ページ (adparameters.php) の URL が、送信ボタンをクリックして $appname でエラーが発生したときにどのように表示されるかを示しています。

/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」と等しくない場合でも、リダイレクト後にテキストが入力されることです。それは私が 2 番目のオブジェクトでも望んでいることです。

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 に答える