カテゴリー : サンプルファイル

サンプルファイル(メール送信プログラム)

サンプルファイルをダウンロードしてください。→sendding

このプログラムはフォームからの受け渡し。メール送信のプログラムが記述されています。

  • ここでは、データの受け渡しの基本的な部分を学習します。
  • サンプルファイルの必要な部分(BODY内の部分)のみを現在練習しているサイトに流用してください。(お問い合わせページを作成してください)inquiry.htmlもPHPファイルにしておくこと
  • →見本

メール送信プログラム解説

各ファイルのPOINT

inquiry.html(phpファイルに変更してください。)

action=”データの送信先” method=”送信方法”

name=”データの識別名”

check_inquiry.php

htmlspecialchars()  … サニタイズ →PHPマニュアル

ENT_QUOTES …. htmlspecialchars()の第二引数 シングルクォートをエスケープさせる

$_POST[''] … POSTメソッドで受け取ったデータの受け取り []の中は送信元でのname属性値

type=”hidden” 隠しデータとして扱う。

nl2br() … 改行部分にBRを埋め込む

send_inquiry.php

mb_encode_mimeheader() …MIMEヘッダの文字列をエンコードする

mb_send_mail() … メール送信関数 →PHPマニュアル

  • 成功した場合はtrueを返します。失敗した場合はfalseを返します。

 

ユーザー定義関数その1

前回のサンプルファイルで使用されている関数htmlspecialchars()ですが、関数名が長くて間違えの元となりそうですね。非常に使う関数なのですが、長いのが難点です。

たとえば、これをe()という関数名にできたら楽だとはおもませんか?

それをやってみましょう!そのためには、ユーザー定義関数を作るのです!

その前に、check_inquiry.php ファイルの$title = htmlspecialchars($_POST['title'], ENT_QUOTES);をコメントアウトして、$title = $_POST['title']; に書き換えてください。その後、お問い合わせページのお問い合わせタイトルに下記のコードを入力してお問い合わせボタンを押してみてください。

どうなりましたか?
このようにサニタイズを行わなければ、サイトに対して第三者からいろいろな攻撃が可能になるのです。
それを防ぐためのhtmlspecialchars()関数なのです。

では、check_inquiry.phpファイルを元に戻しておいてください。

次にfunctions.phpファイルを新たに作成しておきましょう。
そこに、下記コードを書いてください。

そして、header.phpにfunctions.phpをrequireさせてください。
これで、htmlspecialchars関数を使用する場合は、e()でつかえるようになります。
ためしにcheck_inquiry.phpで動作確認を行ってみてください。

解説======

ユーザー定義関数を作っています。

function = ユーザー定義関数を作成する場合の命令文

e = ユーザー定義関数の名前(好きな名前)

() = 引数設定

  • 今回の場合は、引数に渡されるものは、第一引数$str(名前は任意)=文字列
  • 第2引数 オプション扱い(デフォルトで値を設定していますので、呼び出し元で引数を渡さなくても、$charsetの値はUTF-8になっています。)

処理の中身 =htmlspecialchars()関数を使用

  • 第一引数にe関数に渡された引数の$strを渡しています。
  • 第2引数は、ENT_QUOTESを設定、
  • 第3引数は、charsetを渡しています。
  • 参考 htmlspecialchars()マニュアル→

今回は、htmlspecialchars()を楽に使おうという目的のもとにユーザー定義関数の基本ヲ学習しましtら

POINT!==

  • ユーザー定義関数を作る場合にはfunction命令を使う。
  • ユーザー定義関数の名前は好きに決めれる。
  • 引数の数や、データ型も好きに決めれる。
  • 引数にデフォルト値を設定することで、オプション設定を作れる。

 

練習問題(データの受け渡し1)

お問い合わせフォームに、メールアドレスを入力する欄を追加してください。、さらにフォームから送信したときにcheck_inquery.phpやsend_inquery.phpにデータが受け渡しできるようにしてください。

練習問題(データ引渡し2)

1,お問い合わせフォームに GET通信用のフォームを作成して、GETで送れるようにしてみましょう。
必須要件


$catID = array(’001′,’005′,’004′,’003′,’002′); このような配列があります。この配列の各要素がGET通信時のパラメーターになるリンクを作成してください。下記例

001 005 004 003 002

リンクの先はcheck_inquery.phpです。 受け取ったパラメーターは表示できるようにしておきましょう。