SlideShare uma empresa Scribd logo
1 de 41
メールフォー
ムの話
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 フィールドは書き換えが可能です。

Mais conteúdo relacionado

Mais de だいすけ ふるかわ

スタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズスタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズだいすけ ふるかわ
 
LibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考えるLibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考えるだいすけ ふるかわ
 
Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010だいすけ ふるかわ
 
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーションHTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーションだいすけ ふるかわ
 
プログラマがデザインをがんばってみた
プログラマがデザインをがんばってみたプログラマがデザインをがんばってみた
プログラマがデザインをがんばってみただいすけ ふるかわ
 

Mais de だいすけ ふるかわ (19)

スタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズスタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズ
 
FireFoxによるWebデザイン
FireFoxによるWebデザインFireFoxによるWebデザイン
FireFoxによるWebデザイン
 
Ti.developers.meeting
Ti.developers.meetingTi.developers.meeting
Ti.developers.meeting
 
Titanium mobile
Titanium mobileTitanium mobile
Titanium mobile
 
LibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考えるLibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考える
 
実践スクレイピング
実践スクレイピング実践スクレイピング
実践スクレイピング
 
Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010
 
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーションHTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーション
 
Webteko#10 GoogleMaps
Webteko#10 GoogleMapsWebteko#10 GoogleMaps
Webteko#10 GoogleMaps
 
すまべん20091114
すまべん20091114すまべん20091114
すまべん20091114
 
Webteko 20090925
Webteko 20090925Webteko 20090925
Webteko 20090925
 
プログラマがデザインをがんばってみた
プログラマがデザインをがんばってみたプログラマがデザインをがんばってみた
プログラマがデザインをがんばってみた
 
Amazon S3 Ec2
Amazon S3 Ec2Amazon S3 Ec2
Amazon S3 Ec2
 
Java Script入門
Java Script入門Java Script入門
Java Script入門
 
メイドめーる
メイドめーるメイドめーる
メイドめーる
 
メイドめーる
メイドめーるメイドめーる
メイドめーる
 
Iepngfix
IepngfixIepngfix
Iepngfix
 
ememo_plesentation_2008-02-26
ememo_plesentation_2008-02-26ememo_plesentation_2008-02-26
ememo_plesentation_2008-02-26
 
Human Date20070907
Human Date20070907Human Date20070907
Human Date20070907
 

メールフォームを作る