前提・実現したいこと
教本にそってPHPを勉強している者です。
名前、メールアドレス、お問い合わせ内容を入力できるようにし、メールアドレスの欄にバリデーションをかけています。
本の通りにコードを書いてみましたが、なぜか以下のエラーが出ます。
また、メールアドレスを入力していないのに$errに格納したメッセージが表示されてしまいます。
何が間違っているのかもわかりませんでした。
原因を教えていただけると幸いです。よろしくお願いいたします。
発生している問題・エラーメッセージ
Notice: Undefined variable: email in C:\xampp\htdocs\contact.php on line 13
該当のソースコード
PHP
1<?php 2 3if($_SERVER['REQUEST_METHOD'] === 'POST'){ 4 $name = $_POST['name']; 5 $email = $_POST['email']; 6 $comment = $_POST['comment']; 7} 8 9 $pattern = '/\A([a-z0-9_\-+/?]+)'; 10 $pattern .= '@([a-z0-9\-]+.)+[a-z]{2,6}\z/i'; 11 12 13 if(!preg_match($pattern ,$email)){ 14 $err = ''; 15 }else{ 16 $err = 'メールアドレスの形式が違います。'; 17 } 18 if(!isset($err)){ 19 mb_language("Japanese"); 20 mb_internal_encoding("UTF-8"); 21 $user_name ='$name'; 22 $to = '$email'; 23 $subject = 'お問い合わせありがとうございます。'; 24 25 $comment =<<<EOM 26 27 {$name}さん、 28 お問い合わせ内容: 29 {$comment} 30 31EOM; 32 33 $headers = 'From: sender@sender.com'."\r\n"; 34 35 if(mb_send_mail($email,$subject,$comment,$headers) === FALSE){ 36 $message = 'メール送信に失敗しました。'; 37 }else { 38 $message = 'お問い合わせを受け付けました。確認メールを送信しております。'; 39 } 40 } 41 42 43 44 ?> 45 46 <!DOCTYPE html> 47 <html lang="ja"> 48<head> 49<meta charset="UTF-8"> 50<title>お問い合わせフォーム</title> 51</head> 52<body> 53<h1>お問い合わせフォーム</h1> 54<?php if(isset($message)){echo '<p class="red">'.$message.'</p>';} ?> 55<form action="" method="POST"> 56<label>お名前</label> 57<p><input type="text" name="name"></p> 58<label>メールアドレス</label> 59<?php if(isset($err)){echo '<p class="red">'.$err.'</p>';} ?> 60<p><input type="text" name="email"></p> 61<label>お問い合わせ内容</label> 62<p><textarea name="comment"></textarea></p> 63<input type="submit" value="送信"> 64</form> 65</body> 66 </html>
回答1件
あなたの回答
tips
プレビュー