メールフォームを作る

5,509 views

Published on

メールフォームを作る

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,509
On SlideShare
0
From Embeds
0
Number of Embeds
181
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

メールフォームを作る

  1. 1. メールフォー ムの話 Daisuke Furukawa http://mogya.com
  2. 2. いきなり CM
  3. 3. リニューアルしまし
  4. 4. Designed by ケーカさ ん
  5. 5. Webteko から生まれ た コラボレーション!
  6. 6. もひとつ CM
  7. 7. 最近お仕事で作った 自然派化粧品のサイ
  8. 8. shop-pro.jp と WEB が シームレスに連携
  9. 9. ところで。
  10. 10. メール フォーム
  11. 11. 企業向けサイト で たいてい 必要になる機能
  12. 12. PHP で つくってみた。 1時間くら
  13. 13. 特徴 •複数フォーム対 応 •項目変更可能
  14. 14. sendmail.php
  15. 15. 呼び出し側 ( フォームのソー ス )
  16. 16. <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>
  17. 17. 受け取るメール
  18. 18. メールフォームからお問い合わせがありました ----: 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 入力内容 そのほか
  19. 19. 作ってみる
  20. 20. ポイント1
  21. 21. mb_send_mail($to,$subject,$body,$header); メールの送信
  22. 22. ポイント2 文字コードにつ いて
  23. 23. jis  メールで使う文字コード Shift-jis   Windows/Mac でよく使われている文字コー ド。 EUC   Unix/Linux で使われている文字コード 。 utf8   Unicode で使う文字コード。 使い分けを誤ると、文字化けを起こします。
  24. 24. てけとーに拾ってきた CGI (EUC で書かれている or EUC のホームページ を前提としている ) ホームペー ジ Shift-JIS 。 文字化け!(jis)
  25. 25. $text = mb_convert_encoding(" 文字列 ", "utf-8",'Shift-JIS ') 文字コードの変換 変換後 変換前
  26. 26. プログラムのお送信 仕事 •送信用の文章を用意する •文字コードを jis に変換 •送信 •ありがとうございました
  27. 27. ってみた。作
  28. 28. 約 60 行 /40steps
  29. 29. スクリプトの ソース1
  30. 30. $to_addr="mogya+fromweb@mogya.com"; $from_addr="mogya@mogya.com"; $from_title="mogya.com メールフォーム "; $subject="mogya.com メールフォーム "; 設定
  31. 31. 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; 数字三桁で始まる フィールドだけ拾う 文字コードをそろえる ( 重要! ) フィールドの値を拾う フィールドの入力のうち、
  32. 32. 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; 文章を組み立てる フィールドの値を拾う
  33. 33. $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') ; 文章の準備 ユーザーの情報とかデバッグ用の情 報とか。
  34. 34. $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 に変換
  35. 35. if ($emptyMail){ }else{ mb_send_mail($to,$subject,$body,$header); } メールの送信
  36. 36. header( "HTTP/1.1 301 Moved Permanently" ); header( "Location: /thanks" ); exit; ありがとうございましたペー ジ
  37. 37. 注意
  38. 38. <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 フィールドは書き換えが可能です。

×