My Web道

WEB制作科 受講記録 …とその後も続くWEB制作に関する活動・学習記録です。

6/4 [PHP] メールフォーム(エラーチェック機能の追加)

  • [PHP] メールフォーム(エラーチェック機能の追加)
  1. . 文字数チェック
  2. . 全角半角チェック
  3. . メールアドレスチェック

[PHP] メールフォーム(エラーチェック機能の追加)

《init.php
以下書き換え
[変更前] require_once 'init.php';
[変更後] require_once(dirname(__FILE__)).'/init.php';
↑ 親パスを取得している。
dirname()内File前後のアンダースコアは、2×2 (計4)
'init.php'の前のスラッシュは必須(無いとエラーになる)

エラーチェック機能を強化する

《check.php

1. 文字数チェック

▶名前が30文字以内であるかをチェック

if( mb_strlen($name) > 30 ) {
  $name_error = 'お名前の入力文字数が多すぎます。';
  $error = false;
}
2. 全角半角チェック

▶email、電話番号が半角入力されているかをチェック

if(strlen($tel) !==mb_strlen($tel, "UTF-8")){
$tel_error = 'すべて半角数字で入力してください。';
$error = false;
} else {
if( strlen($tel) > 13 ) {
  $tel_error = '電話番号の入力文字数が多すぎます。';
  $error = false;
} 
}
3. メールアドレスチェック

▶メールアドレス 入直値の正当性チェック

if( strlen($email) > 50 ) {
  $email_error = 'メールアドレスの入力文字数が多すぎます。';
  $error = false;
}
if(strpos($email,'@')===false) {
  $email_error = '不正なメールアドレスです。';
  $error = false;
}

[ソースコード]
《check.php

<?php 
require_once(dirname(__FILE__)).'/init.php';
//require_once 'init.php';

//空データチェック
//データがなければ先頭(入力)ページに戻す
if(empty($_POST)) {
  header('Location:index.php');
  exit;     
}

//var_dump($_POST);
//print_r($_POST);
$name = $_POST['name'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$message = $_POST['message'];
$error = true;
//echo '('.$name.')';
$name_error = '';
$email_error = '';
$tel_error = '';
$message_error = '';


if( mb_strlen($name) > 30 ) {
  $name_error = 'お名前の入力文字数が多すぎます。';
  $error = false;     
}
//受け取れるメールアドレスの限界値は320
//ローカルパート(@の前は64文字)
if( mb_strlen($email) > 50 ) {
  $email_error = 'メールアドレスの入力文字数が多すぎます。';
  $error = false;     
}

//

if( mb_strlen($tel) > 13 ) {
  $tel_error = '電話番号の入力文字数が多すぎます。';
  $error = false;     
} 

if( mb_strlen($message) > 128 ) {
  $message_error = 'お問い合わせ内容の入力文字数が多すぎます。';
  $error = false;     
}

//メールアドレス@チェック
if(strpos($email,'@')===false) {
  $email_error = '不正なメールアドレスです。';
  $error = false;     
}

//半角入力チェック(email)
if(strlen($email) !==mb_strlen($email, "UTF-8")){
     $email_error = 'すべて半角数字で入力してください。';
     $error = false;
} 

//半角入力チェック(電話番号)
if(strlen($tel) !==mb_strlen($tel, "UTF-8")){
     $tel_error = 'すべて半角数字で入力してください。';
     $error = false;
} 

//空文字チェック
if($name =='') {
  $name_error = 'お名前が、入力されていません。';
  $error = false;     
}
if($email =='') {
  $email_error = 'メールアドレスが、入力されていません。';
  $error = false;     
}
if($tel =='') {
  $tel_error = 'お電話番号が、入力されていません。';
  $error = false;     
}
if($message =='') {
  $message_error = 'メッセージが、入力されていません。';
  $error = false;     
}

//エラーチェックをこの直前に挿入(6/5)
$_SESSION['mail_data']['name'] = $name;
//var_dump($_SESSION['mail_data']['name']);
$_SESSION['mail_data']['email'] = $email;
//var_dump($_SESSION['mail_data']['email']);
$_SESSION['mail_data']['tel'] = $tel;
//var_dump($_SESSION['mail_data']['tel']);
$_SESSION['mail_data']['message'] = $message;
//var_dump($_SESSION['mail_data']['message']);
$_SESSION['mail_data']['error'] = $error;
?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>お問い合わせ確認画面</title>
<link rel="stylesheet" href="css/style1.css">
</head>
<body>
<div id="container">
<h1>お問い合わせ確認</h1>
<table>
<tr>
<th>お名前:</th><td><?php echo h($name).h($name_error); ?></td>
</tr>
<tr>
<th>email:</th><td><?php echo h($email).h($email_error); ?></td>
</tr>
<tr>
<th>お電話番号:</th><td><?php echo h($tel).h($tel_error); ?></td>
</tr>
<tr>
<th>お問い合わせ内容:</th><td><?php echo nl2br(h($message).h($message_error)); ?></td>
</tr>
</table>
<p><a href="index.php">戻る</a>
<?php 
if($error) {
echo '<a href="thanks.php">送信</a>';
}
?>
</p>
</div>
</body>
</html>
<?php ob_end_flush(); 
入力チェックについて

参考サイト:

入力チェック(正規表現含む)|formオブジェクト|JavaScript/DOM|PHP & JavaScript Room:
http://phpjavascriptroom.com/?t=js&p=formcheck

全角入力のみかチェック | しんちゃんのPHP入門道場:
http://www.n-shinchan.com/?pi=4&ci=70