サンプルファイル(メール送信プログラム)
- 2013 8/4
カテゴリー : サンプルファイル
各ファイルのPOINT
inquiry.html(phpファイルに変更してください。)
1 |
<form action="check_inquiry.php" method="POST"> |
action=”データの送信先” method=”送信方法”
1 |
<input type="text" name="title" size="50"> |
name=”データの識別名”
check_inquiry.php
1 |
$title = htmlspecialchars($_POST['title'], ENT_QUOTES); |
htmlspecialchars() … サニタイズ →PHPマニュアル
ENT_QUOTES …. htmlspecialchars()の第二引数 シングルクォートをエスケープさせる
$_POST[''] … POSTメソッドで受け取ったデータの受け取り []の中は送信元でのname属性値
1 |
<input type="hidden" name="title" value="<?php echo $title; ?>"> |
type=”hidden” 隠しデータとして扱う。
1 |
echo nl2br($message); |
nl2br() … 改行部分にBRを埋め込む
send_inquiry.php
1 |
$header = 'From: '. mb_encode_mimeheader($name) . '<' . $email .'>'; |
mb_encode_mimeheader() …MIMEヘッダの文字列をエンコードする
1 |
$result = mb_send_mail("info@vowshe.info", $title, $message, $header); |
mb_send_mail() … メール送信関数 →PHPマニュアル
前回のサンプルファイルで使用されている関数htmlspecialchars()ですが、関数名が長くて間違えの元となりそうですね。非常に使う関数なのですが、長いのが難点です。
たとえば、これをe()という関数名にできたら楽だとはおもませんか?
それをやってみましょう!そのためには、ユーザー定義関数を作るのです!
その前に、check_inquiry.php ファイルの$title = htmlspecialchars($_POST['title'], ENT_QUOTES);をコメントアウトして、$title = $_POST['title']; に書き換えてください。その後、お問い合わせページのお問い合わせタイトルに下記のコードを入力してお問い合わせボタンを押してみてください。
1 |
<script>$(function(){$('*').css('background','red');});</script> |
どうなりましたか?
このようにサニタイズを行わなければ、サイトに対して第三者からいろいろな攻撃が可能になるのです。
それを防ぐためのhtmlspecialchars()関数なのです。
では、check_inquiry.phpファイルを元に戻しておいてください。
次にfunctions.phpファイルを新たに作成しておきましょう。
そこに、下記コードを書いてください。
1 2 3 |
function e($str,$charset='UTF-8'){ return htmlspecialchars($str,ENT_QUOTES,$charset); } |
そして、header.phpにfunctions.phpをrequireさせてください。
これで、htmlspecialchars関数を使用する場合は、e()でつかえるようになります。
ためしにcheck_inquiry.phpで動作確認を行ってみてください。
解説======
ユーザー定義関数を作っています。
function = ユーザー定義関数を作成する場合の命令文
e = ユーザー定義関数の名前(好きな名前)
() = 引数設定
処理の中身 =htmlspecialchars()関数を使用
今回は、htmlspecialchars()を楽に使おうという目的のもとにユーザー定義関数の基本ヲ学習しましtら
POINT!==
お問い合わせフォームに、メールアドレスを入力する欄を追加してください。、さらにフォームから送信したときにcheck_inquery.phpやsend_inquery.phpにデータが受け渡しできるようにしてください。