Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

メールフォームを作る

5,595 views

Published on

メールフォームを作る

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

メールフォームを作る

  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 フィールドは書き換えが可能です。

×