私のウェブサイトにはたくさんのフォームとフィールドがあり、完璧に機能するシステムがありますが、本当に苦痛で、立ち上がって実行することができます。
これは私のシステムが行うことです。フォームを送信すると、すべての情報がすべてのデータを所有し、それを検証するクラスに送信されます。また、このようにフィールドの値を格納します$_SESSION['userUpdate']['firstName'][1] = $firstName;
エラーが発生した場合、このようなセッション変数が作成されます$_SESSION['userUpdate']['firstName'][0] = 1;
。1は、フィールドが空であることを示します。エラーがない場合、セッション変数は0になります。
検証プロセスでエラーが見つからなかった場合、データはデータベースに送信されます。
その後、フォームページは次のように再読み込みされます。
header( 'HTTP/1.1 303 See Other' );
header( 'Location: '.curPageURL().'' );
ページをリロードするときにデータを再送信できないようにするために使用します。これが、これらすべてのセッション変数を使用している理由です。
次に、多くのit / else if / elseを使用して、セッション変数の値と出力エラーを確認し、前に入力したデータをフォームに入力します。
名フィールドの例を示します。
これはHTMLコードです:
<label for="firstName" class="block">First Name</label>
<span>Your first name goes here.</span><?php echo $text_first_name ?>
<input type="text" id="firstName" class="mediaText" name="firstName" value="<?php echo $first_name2; ?>" onchange="needToConfirm=true" <?php echo $style_first_name ?> />
これは、クラスによる検証プロセスです。
$_SESSION['ui']['first_name'][1] = $this->first_name;
if (isset($this->first_name))
{
if($this->first_name == NULL)
{
$_SESSION['ui']['first_name'][0] = 1;
}
else if(minRange(3, $this->first_name))
{
$_SESSION['ui']['first_name'][0] = 2;
}
else
{
array_push($set, "FirstName = '".$db->sql_escape($this->first_name)."'");
}
}
これは、最終的なエラーを処理するphpコードです。
$error_bg = "style=\"background:#EE5C42\"";
//FIRST NAME
if($_SESSION['ui']['first_name'][0] == 1)
{
$style_first_name = $error_bg;
$first_name2 = $_SESSION['ui']['first_name'][1];
}
else if($_SESSION['ui']['first_name'][0] == 2)
{
$style_first_name = $error_bg;
$first_name2 = $_SESSION['ui']['first_name'][1];
$text_first_name = "<span class=\"errorText\">Your first name must consist of at least 3 characters.</span>";
}
else
{
$first_name2 = $userdetails["FirstName"];
}
ページの最後に、セッション変数の設定を解除するための小さな関数があります。
これをより簡単に、そしてより簡単に立ち上げて実行する方法があるのだろうか?