メールフォームに入力された情報をデータベースに蓄える準備
日本語表記にかかわる変更
「XAMPP」内の「php.ini」を開く(メモ帳以外のテキストエディタで)
↓
「default_charset」を検索
↓
「;default_charset = "キャラクターセット名"」の1行を、
「default_charset = "UTF-8"」
と書き換える(行頭の「;」を削除すること)
↓
引き続き「mbstring.lang」で検索
↓
「;mbstring.language = Japanese」の行頭「;」を削除
↓
「mbstring.internal」で検索し、
「;mbstring.internal_encoding = EUR-JP」の1行を
「mbstring.internal_encoding = UTF-8」
に書き換える(ここも行頭の「;」を削除すること)
input.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>お問い合わせ入力フォーム</title> <link rel="stylesheet" href="style.css" media="screen,print"> </head> <body> <form action="check.php" method="post" id="inquiry"> <table summary="お問い合わせに関する入力項目名とその入力欄"> <tr> <th><label for="name">お名前</label></th> <td><input type="text" name="name" size="30" id="name" class="text1"></td> </tr> <tr> <th><label for="email">メールアドレス</label></th> <td><input type="text" name="email" size="30" id="email" class="text2"></td> </tr> <tr> <th><label for="message">ご意見</label></th> <td><textarea name="message" cols="30" rows="5" id="message" class="text3"></textarea></td> </tr> </table> <input type="submit" value="確認画面へ"> </form> </body> </html>
check.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>確認画面</title> <link rel="stylesheet" href="style.css" media="screen,print"> </head> <body> <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $name = htmlspecialchars($name); $email = htmlspecialchars($email); $message = htmlspecialchars($message); echo'<ul>'."\n"; echo '<li>'; if($name==''){ echo 'お名前が入力されていません。<br>'."\n"; }else { echo 'ようこそ、'.$name.'様<br>'."\n"; } echo '</li>'."\n"; echo '<li>'; if($email==''){ echo 'メールアドレスが入力されていません。<br>'."\n"; }else { echo 'メールアドレス:'.$email.'<br>'."\n"; } echo '</li>'."\n"; echo '<li>'; if($message==''){ echo'お問い合わせの内容が、入力されていません。'."\n"; }else { echo 'お問い合わせの内容:'.$message."\n"; } echo '</li>'."\n"; echo '</ul>'."\n"; if($name=='' || $email=='' || $message==''){ echo'<form>'."\n"; echo'<input type="button" onClick="history.back()" value="戻る">'."\n"; echo '</form>'."\n"; } else { echo '<form action="thanks.php" method="post">'."\n"; echo '<input type="hidden" name="name" value="'.$name.'">'; echo '<input type="hidden" name="email" value="'.$email.'">'; echo '<input type="hidden" name="message" value="'.$message.'">'; echo '<input type="bottun" onClick="history.back()" value="戻る">'."\n"; echo '<input type="submit" value="送信">'."\n"; echo '</form>'."\n"; } ?> </body> </html>
check.php実行画面で気になる表示。
何かの罠に引っかかっているのだろうか…。
thanks.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>確認画面</title> <link href="style.css" rel="stylesheet" media="screen, print"> </head> <body> <?php $dsn = 'mysql:dbname=contactus;host=localhost'; $user = 'root'; $password = 'root'; $dbh = new PDO($dsn, $user, $password); $dbh -> query('SET NAMES UTF8'); $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $name = htmlspecialchars($name); $email = htmlspecialchars($email); $message = htmlspecialchars($message); echo $name.'様<br>'."\n"; echo 'お問い合わせ、ありがとうございました。<br>'."\n"; echo 'お問い合わせ内容『'.$message.'』を<br>'."\n"; echo $email.'にメールで送りましたのでご確認ください。'."\n"; $mail_sub = 'お問い合わせを受け付けました。'; $mail_body = $name.'様、ご協力ありがとうございました。'; $mail_body = html_entity_decode($mail_body,ENT_QUOTES,"UTF-8"); $mail_head = 'From:hatenafight@gmail.com'; mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($email,$mail_sub,$mail_body,$mail_head); $sql = 'INSERT INTO inquiry(name,email,message) VALUES("'.$name.'","'.$email.'","'.$message.'")'; $stmt = $dbh -> prepare($sql); $stmt -> execute(); $dbh = null; ?> </body> </html>
style.css
@charset "utf-8"; * { margin: 10px; padding: 0; font-family: "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, "MS Pゴシック", "MS PGothic", sans-serif; line-height:1.5em; } body { font-size: 1.0em; font-family: sans-serif; line-height: 1.5; color: #333333; background-color: #FFFFFF; } #inquiry { width: 600px; /* ボックスの幅を指定 */ padding: 2px 0 2px 20px; border-left: 5px #C30 solid; } th { text-align: right; } td { margin-right: 2px; }
本日の「恐怖の1枚」
「詳しい知識」…にひるんでいるうちはちっとも詳しくない。
$dsn = 'mysql:dbname=データベース名;host=データベースホスト名';
さらにロリポップにおける「データベースホスト名」が
何に当たるのかわからなくて作業が止まってしまったのは、
完全に詳しくない。>追い打ち