• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

メールフォームを作る

on

  • 6,068 views

メールフォームを作る

メールフォームを作る

Statistics

Views

Total Views
6,068
Views on SlideShare
5,945
Embed Views
123

Actions

Likes
0
Downloads
2
Comments
0

4 Embeds 123

http://blog.mogya.com 114
http://www.slideshare.net 5
http://mogya.com 3
http://74.125.153.132 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    メールフォームを作る メールフォームを作る Presentation Transcript

    • メールフォーム の話 Daisuke Furukawa http://mogya.com
    • いきなり CM
    • リニューアルしました。
    • Designed by ケーカさん
    • Webteko から生まれた コラボレーション!
    • もひとつ CM
    • 最近お仕事で作った 自然派化粧品のサイト
    • shop-pro.jp と WEB がシームレスに連携
    • ところで。
    •  
    •  
    • メール フォーム
    • 企業向けサイトで たいてい 必要になる機能
    • PHP で つくってみた。 1時間くらいで。
    • 特徴
      • 複数フォーム対応
      • 項目変更可能
    • sendmail.php
    • 呼び出し側 ( フォームのソース )
    • <form name=&quot;mailform&quot; method=&quot;post&quot; action=&quot;/sendmail.php&quot;> お名前 : (必須) <br /> <input type=&quot;text&quot; size=&quot;50&quot; name=&quot; 001_Name &quot; /> <br /> メールアドレス : (必須) <br /> <input type=&quot;text&quot; size=&quot;50&quot; name=&quot; 002_EMAIL &quot; id=&quot;email_input&quot; /> <span id=&quot;mail_error_msg&quot; class=&quot;warn_text&quot;></span> <br /> ホームページ :( お持ちであれば )<br /> <input type=&quot;text&quot; size=&quot;50&quot; name=&quot; 003_HPAGE &quot; /> <br /> 電話番号 :( 任意 )<br /> <input type=&quot;text&quot; size=&quot;50&quot; name=&quot; 004_PHONE &quot; /> <br /> メッセージ : (できるだけ具体的にお書きください。) <br /> <textarea cols=&quot;50&quot; rows=&quot;8&quot; name=&quot; 005_MESSAGE &quot;></textarea> <br /><br />    <input type=&quot;submit&quot; value=&quot;  送信する  &quot; />    <input type=&quot;reset&quot; value=&quot;  取消  &quot; /> </form>
    • 受け取るメール
    • メールフォームからお問い合わせがありました ----: 001_Name: 古川大輔 002_EMAIL: [email_address] 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(&quot; 文字列 &quot;, &quot;utf-8&quot;,'Shift-JIS ') 文字コードの変換 変換後 変換前
    • 送信プログラムのお仕事
      • 送信用の文章を用意する
      • 文字コードを jis に変換
      • 送信
      • ありがとうございました
    • 作ってみた。
    • 約 60 行 /40steps
    • スクリプトのソース1
    • $to_addr=&quot;mogya+fromweb@mogya.com&quot;; $from_addr=&quot;mogya@mogya.com&quot;; $from_title=&quot;mogya.com メールフォーム &quot;; $subject=&quot;mogya.com メールフォーム &quot;; 設定
    • ob_start(); foreach($_REQUEST as $key=>$value){ if (ereg(&quot;[0-9][0-9][0-9]_.*&quot;,$key)) { # $value_utf8 = mb_convert_encoding($value, &quot;utf-8&quot;,&quot;Shift-JIS&quot;); $value_utf8 = $value; print $key.&quot;: &quot;; print &quot;   &quot;.ereg_replace(&quot; &quot;,&quot;   &quot;,$value_utf8).&quot; &quot;; 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(&quot;[0-9][0-9][0-9]_.*&quot;,$key)) { # $value_utf8 = mb_convert_encoding($value, &quot;utf-8&quot;,&quot;Shift-JIS&quot;); $value_utf8 = $value; print $key.&quot;: &quot;; print &quot;   &quot;.ereg_replace(&quot; &quot;,&quot;   &quot;,$value_utf8).&quot; &quot;; if ( (true==$emptyMail)&&(strlen($value)>0) ){ $emptyMail=false; } } } $var_str = ob_get_contents(); ob_end_clean(); #print $var_str; フィールドの値を拾う 文章を組み立てる
    • $mailtime = date(&quot;Y-m-d H:i:s&quot;); $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 = &quot;From: {$from_title} <{$from_addr}> &quot;; $body= mb_convert_encoding(&quot; メールフォームからお問い合わせがありました ----: &quot;, &quot;ISO-2022-JP&quot;,'utf-8') .mb_convert_encoding($var_str, &quot;ISO-2022-JP&quot;,'auto') .mb_convert_encoding($debug_str, &quot;ISO-2022-JP&quot;,'utf-8') ; 文章の準備 ユーザーの情報とかデバッグ用の情報とか。
    • $mailtime = date(&quot;Y-m-d H:i:s&quot;); $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 = &quot;From: {$from_title} <{$from_addr}> &quot;; $body= mb_convert_encoding(&quot; メールフォームからお問い合わせがありました ----: &quot;, &quot;ISO-2022-JP&quot;,'utf-8') .mb_convert_encoding($var_str, &quot;ISO-2022-JP&quot;,'auto') .mb_convert_encoding($debug_str, &quot;ISO-2022-JP&quot;,'utf-8') ; 文章の準備 全部結合& jis に変換
    • if ($emptyMail){ }else{ mb_send_mail($to,$subject,$body,$header); } メールの送信
    • header( &quot;HTTP/1.1 301 Moved Permanently&quot; ); header( &quot;Location: /thanks&quot; ); exit; ありがとうございましたページ
    •  
    • 注意
    • <form name=&quot;mailform&quot; method=&quot;post&quot; action=&quot;/sendmail.php&quot;> <!-- メール送信先 --> <input type=&quot;hidden&quot; name=&quot;mailto&quot; value=&quot;mogya@mogya.com&quot; /> お名前 : (必須) <br /> <input type=&quot;text&quot; size=&quot;50&quot; name=&quot;001_Name&quot; /> <br /> : こういう改造をしない hidden フィールドは書き換えが可能です。