1

彼が去った都市に関するユーザーデータを取得するフォームを作成しました。フォームは、プロファイルと呼ばれるテーブルにデータを格納します。プロファイルテーブルにデータを挿入する関数を使用しています。すでにデータがある場合、関数はテーブルを更新するだけです。ユーザーが都市フィールドにデータを挿入せずに送信を押した場合、何も送信されないため、テーブルは以前のデータを保持し続けます。

フォームでは、ユーザーがazまたはスペース文字のみを挿入するように検証を行います。

検証に次のコードを使用しました。

if(  empty($_POST) === false  ){

  if(  empty($errors) === true  ){

   if( preg_match('/^[a-zA-Z ]+$/', $_POST['city']) ===0 ){
     $errors[]='<font color="#963">City must only contains a-z and spaces</font>';
     }

    }
   }

できます!しかし、現在の問題は、ユーザーがフォームを空のままにして送信を押すと、上記のコードがデータを配置するように強制することです(たとえば、都市にはazとスペースのみが含まれている必要があります)。ユーザーがデータを入力した場合にのみ、上記のコードを使用してフォームを検証するにはどうすればよいですか。そうでなければ、問題なく続行します。

4

1 に答える 1

0

エラーを発生させることなくこれを行うことができます。交換

if( preg_match('/^[a-zA-Z ]+$/', $_POST['city']) ===0 ){

$_POST['city'] = preg_replace("&[^a-zA-Z ]&","",$_POST['city']);

これにより、データベースに挿入される前に、すべての非小文字と非スペースが何にも置き換えられません。

編集:

それでもエラーを生成したい場合は、

if( preg_match("&[^a-zA-Z ]&",$_POST['city']) ){
    $errors[]='<font color="#963">City must only contains a-z and spaces</font>';
}

preg_replaceの前。

于 2013-02-24T18:56:13.597 に答える