本日の学習課題
- [PHP] メールフォーム(エラーチェック機能の追加)
- 文字数チェック
- 全角半角チェック
- メールアドレスチェック
本日の進行
init.phpの書き換え
以下書き換え[変更前]
require_once 'init.php';
[変更後]
require_once(dirname(__FILE__)).'/init.php';
↑ 親パスを取得している。
dirname()内File前後のアンダースコアは、2×2 (計4)
'init.php'の前のスラッシュは必須(無いとエラーになる)
check.phpの修正
エラーチェック機能を強化する
1. 文字数チェック
名前が30文字以内であるかをチェック
《check.php》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;
}
<?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