PCゲーマーのWebデザイン備忘録

PCゲーマーのWebデザインの勉強と備忘録。Webサイト制作系の職業訓練を受けてます。

【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;
}