狠狠撸

狠狠撸Share a Scribd company logo
メールフォー
ムの話
Daisuke Furukawa
http://mogya.com
いきなり
CM
リニューアルしまし
Designed by ケーカさ
ん
Webteko から生まれ
た
コラボレーション!
もひとつ
CM
最近お仕事で作った
自然派化粧品のサイ
shop-pro.jp と WEB が
シームレスに連携
ところで。
メールフォームを作る
メールフォームを作る
メール
フォーム
企業向けサイト
で
たいてい
必要になる機能
PHP で
つくってみた。
1時間くら
特徴
?複数フォーム対
応
?項目変更可能
sendmail.php
呼び出し側
( フォームのソー
ス )
<form name="mailform" method="post" action="/sendmail.php">
お名前 : (必須) <br />
<input type="text" size="50" name="001_Name" />
<br />
メールアドレス : (必須) <br />
<input type="text" size="50" name="002_EMAIL" id="email_input" />
<span id="mail_error_msg" class="warn_text"></span>
<br />
ホームページ :( お持ちであれば )<br />
<input type="text" size="50" name="003_HPAGE" />
<br />
電話番号 :( 任意 )<br />
<input type="text" size="50" name="004_PHONE" />
<br />
メッセージ : (できるだけ具体的にお書きください。) <br />
<textarea cols="50" rows="8" name="005_MESSAGE"></textarea>
<br /><br />
   <input type="submit" value="  送信する  " />
   <input type="reset" value="  取消  " />
</form>
受け取るメール
メールフォームからお問い合わせがありました
----:
001_Name:
古川大輔
002_EMAIL:
mogya@mogya.com
003_HPAGE:
http://mogya.com
004_PHONE:
090xxxxxxx
005_MESSAGE:
  3000 万円でブログを作ってほしいです。
----
送信時刻: 2008-11-26 18:21:48
送信元 URL : http://mogya.com/contact/
IP アドレス: 61.192.161.146
CGI の名前: /sendmail.php
ブラウザ: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-JP-mac; rv:1.8.1.18)
Gecko/20081029 Firefox/2.0.0.18
入力内容
そのほか
作ってみる
ポイント1
mb_send_mail($to,$subject,$body,$header);
メールの送信
ポイント2
文字コードにつ
いて
jis
 メールで使う文字コード
Shift-jis
  Windows/Mac でよく使われている文字コー
ド。
EUC
  Unix/Linux で使われている文字コード
。
utf8
  Unicode で使う文字コード。
使い分けを誤ると、文字化けを起こします。
てけとーに拾ってきた
CGI
(EUC で書かれている
or EUC のホームページ
を前提としている )
ホームペー
ジ
Shift-JIS 。
文字化け!(jis)
$text = mb_convert_encoding(" 文字列 ", "utf-8",'Shift-JIS ')
文字コードの変換
変換後 変換前
プログラムのお送信 仕事
?送信用の文章を用意する
?文字コードを jis に変換
?送信
?ありがとうございました
ってみた。作
約 60 行 /40steps
スクリプトの
ソース1
$to_addr="mogya+fromweb@mogya.com";
$from_addr="mogya@mogya.com";
$from_title="mogya.com メールフォーム ";
$subject="mogya.com メールフォーム ";
設定
ob_start();
foreach($_REQUEST as $key=>$value){
if (ereg("[0-9][0-9][0-9]_.*",$key)) {
# $value_utf8 = mb_convert_encoding($value, "utf-8","Shift-JIS");
$value_utf8 = $value;
print $key.":n";
print "   ".ereg_replace("rn","n   ",$value_utf8)."n";
if ( (true==$emptyMail)&&(strlen($value)>0) ){
$emptyMail=false;
}
}
}
$var_str = ob_get_contents();
ob_end_clean();
#print $var_str;
数字三桁で始まる
フィールドだけ拾う
文字コードをそろえる ( 重要! )
フィールドの値を拾う
フィールドの入力のうち、
ob_start();
foreach($_REQUEST as $key=>$value){
if (ereg("[0-9][0-9][0-9]_.*",$key)) {
# $value_utf8 = mb_convert_encoding($value, "utf-8","Shift-JIS");
$value_utf8 = $value;
print $key.":n";
print "   ".ereg_replace("rn","n   ",$value_utf8)."n";
if ( (true==$emptyMail)&&(strlen($value)>0) ){
$emptyMail=false;
}
}
}
$var_str = ob_get_contents();
ob_end_clean();
#print $var_str;
文章を組み立てる
フィールドの値を拾う
$mailtime = date("Y-m-d H:i:s");
$debug_str = <<<EOT
----
 送信時刻: {$mailtime}
 送信元 URL : {$_SERVER['HTTP_REFERER']}
  IP アドレス: {$_SERVER['REMOTE_ADDR']}
  CGI の名前: {$_SERVER['SCRIPT_FILENAME']}
 ブラウザ: {$_SERVER['HTTP_USER_AGENT']}
EOT;
$to=$to_addr;
$header = "From: {$from_title} <{$from_addr}>n";
$body= mb_convert_encoding(" メールフォームからお問い合わせがありまし
た n----:n", "ISO-2022-JP",'utf-8')
.mb_convert_encoding($var_str, "ISO-2022-JP",'auto')
.mb_convert_encoding($debug_str, "ISO-2022-JP",'utf-8')
;
文章の準備
ユーザーの情報とかデバッグ用の情
報とか。
$mailtime = date("Y-m-d H:i:s");
$debug_str = <<<EOT
---
 送信時刻: {$mailtime}
 送信元 URL : {$_SERVER['HTTP_REFERER']}
  IP アドレス: {$_SERVER['REMOTE_ADDR']}
  CGI の名前: {$_SERVER['SCRIPT_FILENAME']}
 ブラウザ: {$_SERVER['HTTP_USER_AGENT']}
EOT;
$to=$to_addr;
$header = "From: {$from_title} <{$from_addr}>n";
$body= mb_convert_encoding(" メールフォームからお問い合わせがありまし
た n----:n", "ISO-2022-JP",'utf-8')
.mb_convert_encoding($var_str, "ISO-2022-JP",'auto')
.mb_convert_encoding($debug_str, "ISO-2022-JP",'utf-8')
;
文章の準備
全部結合& jis に変換
if ($emptyMail){
}else{
mb_send_mail($to,$subject,$body,$header);
}
メールの送信
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: /thanks" );
exit;
ありがとうございましたペー
ジ
メールフォームを作る
注意
<form name="mailform" method="post" action="/sendmail.php">
<!-- メール送信先 -->
<input type="hidden" name="mailto" value="mogya@mogya.com" />
お名前 : (必須) <br />
<input type="text" size="50" name="001_Name" />
<br />
:
こういう改造をしない
hidden フィールドは書き換えが可能です。

More Related Content

メールフォームを作る