【PHP】 メールフォームを作る⑤
引き続きメールフォームを作っていきます。今回も引き続きセキュリティ面を強化していきます。
今回は、フォームに入力された字数制限・必須文字などの判定をしていきます。
【PHP】 メールフォームを作る④ - PCゲーマーのWebデザイン備忘録
まず、check.php の中に、フォームで入力された文字の判定をする記述をします。
やりたいことは字数制限、メールアドレスが全角か半角か、メールアドレスの中に @ が含まれているか、を判定します。
字数制限には mb_strlen を使います。if文を使い、「○文字以下なら」という条件を付けます。
if (mb_strlen($判定する変数,'utf-8')>文字数){
$error = 'エラーメッセージ';
}
全角半角判定には strlen を使います。strlen は文字数ではなく、バイト数で判定します。英数字以外の文字はすべて3バイトになるので、mb_strlen の時の文字数と、strlen のバイト数を比較してイコールにならなければ、全角文字が含まれることになります。
if(strlen($判定する変数) !=mb_strlen($判定する変数,'utf-8')){ $error = 'すべて半角で記入してください'; }
@ が含まれるかの判定には strpos を使います。
if(strpos($email,'@')===false){ $error = '@がありません'; }
check.php にエラーを表示する仕組みをつくる。
すべての項目を判定する if文をつくり、エラーが出たら、$error を ture にするようにして、一個でもエラーが出たら、メールが送信できないようにします。
$error =false; $name_error =''; $email_error =''; $message_error =''; if(strpos($email,'@')===false){ $email_error = '@がありません'; $error = true; } if(strlen($email) !=mb_strlen($email,'utf-8')){ $email_error = '半角でメールアドレスを入力して下さい。'; $error = true; } if (mb_strlen($name,'utf-8')>30){ $name_error = '名前が長すぎです。'; $error = true; } if (mb_strlen($email,'utf-8')>50){ $email_error = 'Eメールが長すぎです。'; $error = true; } if (mb_strlen($message,'utf-8')>128){ $message_error = 'お問い合わせ内容が長すぎです。'; $error = true; } if(empty($name)){ $name_error = '名前が空です。'; $error = true; } if(empty($email)){ $email_error = 'Eメールが空です。'; $error = true; } if(empty($message)){ $message_error = 'お問い合わせ内容が空です。'; $error = true; }