WebデザインノートBOOK

Webクリエイターに関する勉強を書き記したブログになります。

メールフォーム〜mb_send_mail

PHPで、文字列の結合などを行いメール本文を作る。
C言語のstrcat()とfprintf()みたいな感じ。
ファイルポインタを読み込んで、自分で考えた形式でファイルに出力する。
通常のprintf()より面白かった。
※ファイルポインタやfprintf()はPHPにもあるみたい。完全Cだな。


メールフォーム例

だいたいこんな感じです。

inputタグのname属性値
↓
$●●● = $_POST["◯◯◯"];
 ここの◯の部分に入り、●の変数へと渡され、PHPで処理される。

※以下2つのソースは同一のファイル内に存在します。

メールフォーム(contact.php)
<?
if (!strlen($mode)) {
?>
    <div>
      <form action="このファイル自身.php" method="post">
      <input type="hidden" name="mode" value="1">
      <table cellpadding="0" cellspacing="0">
        <tr>
          <th>お客様名</th>
          <td>
            <div><input type="text" name="name01" value="" /></div>
            <p>例:山田 太郎</p>
          </td>
        </tr>
        <tr>
          <th>お客様名(フリガナ)</th>
          <td>
            <div><input type="text" name="name02" value="" /></div>
            <p>例:ヤマダ タロウ</p>
          </td>
        </tr>
        <tr>
          <th>企業名</th>
          <td>
            <div><input type="text" name="company" value="" /></div>
            <p>法人の方はコチラにご入力お願い致します。 例:???株式会社</p>
          </td>
        </tr>
        <tr>
          <th>郵便番号</th>
          <td>
            <div><input type="text" name="address01" value="" /></div>
            <p>例:000-0000</p>
          </td>
        </tr>
        <tr>
          <th>ご住所</th>
          <td>
            <div><input type="text" name="address02" value="" /></div>
            <p>例:東京都◯◯◯****</p>
          </td>
        </tr>
        <tr>
          <th>ご連絡先</th>
          <td>
            <div><input type="text" name="tel" value="" /></div>
            <p>例:03-1234-5678</p>
          </td>
        </tr>
        <tr>
          <th>メールアドレス</th>
          <td>
            <div><input type="text" name="mail_address01" alue="" /></div>
            <p>例:*****@***.***</p>
          </td>
        </tr>
        <tr>
          <th>メールアドレス(確認用)</th>
          <td>
            <div><input type="text" name="mail_address02" value="" /></div>
            <p>※確認の為、もう一度ご入力お願い致します。</p>
          </td>
        </tr>
        <tr>
          <th>お問い合わせ内容</th>
          <td><textarea name="comment"></textarea></td>
        </tr>
      </table>
      
      <div class="submit"><input type="image" src="img/contact/contact_submit.png" alt="この内容で送信" /></div>
      
      </form>
    </div>
    
<?
} else {
?>
    <div class="content01_area">
      <p>お問い合わせありがとうございました。</p>
    </div>
<?
}
?>
取得〜送信(内部ロジック)
<?
    $mode = $_POST["mode"];
    
    if (strlen($mode)) 
    {
          // フォームからの情報取得
          $name01 = $_POST["name01"];
          $name02 = $_POST["name02"];
          $company = $_POST["company"];
          $address01 = $_POST["address01"];
          $address02 = $_POST["address02"];
          $tel = $_POST["tel"];
          $mail_address01 = $_POST["mail_address01"];
          $comment = $_POST["comment"];
          
          // 初期設定
          $CRLF = "\r\n";
          $LF = "\n";
          $CR = "\r";
          
          // お問い合わせメール受付側
          $send_mail_address = "*********@***.**";
          $subject = "ここにメール件名";
          
          $content = "メール本文はここから";
          $content .= "メール本文の続き01";
          $content .= "メール本文の続き02";
          $content .= "メール本文の続き03";
          $content .= "氏 名 :" . $name01 . "(" . $name02 . ")" . $CRLF ;
          $content .= "会社名 :" . $company . $CRLF ;
          $content .= "郵便番号:" . $address01 . $CRLF ;
          $content .= "住 所 :" . $address02 . $CRLF ;
          $content .= "電話番号:" . $tel . $CRLF ;
          $content .= "メール :" . $mail_address01 . $CRLF ;
          $content .= "本 文 :" . $comment . $CRLF ;
           mb_language("ja");
           mb_internal_encoding("SJIS");
           mb_send_mail($send_mail_address, $subject, $content, "From:".$mail_address01);

                :
                :
                :
     }
?>


mb_language()とかmb_internal_encoding()、mb_send_mail()も、対携帯電話とか扱うと難しそう。エンコぐらい統一しろよ、とつい言いたくなる…。

それよかIE6、7、8...
コイツらだけに効果のあるウ◯ルス作ってばらまいて全部クラ◯シュしてやりたい気分。。(注、やりません)


最後に。HTMLのフォームとPHPでの簡単な取得までしか知らなかった私ですが、仕事で使うと覚えるの早かったです。数十分で大体理解できたと思います。もちろん全部自分で調べてです。(ちなみに私、PHPに関しては今回の受講生とほぼ同時スタートです。)


 

Heal The World

iPhoneに入ってる音楽をランダムで聞いてたら偶然流れてきた曲。

音楽を聞くと過去の色んな場面やその時の想いが思い出されてきます。そして今この時、何かを考えるきっかけを与え、この先も何かの影響を与えていく。



ああ〜、なんか今年はやけに長く感じた1年だった。

今日のPHP課題についての補足

今日のPHP課題003についての補足です。



時間設定に関して

date関数で時間を取得する際、初期で指定されているタイムゾーンの時間を取得してしまうので注意。

C:\xampp\php

上のフォルダ内にある「php.ini」ファイル。



php.ini」に記述されている下記の部分。

[Date]
; Defines the default timezone used by the date functions
date.timezone = 〜〜〜

ここの「date.timezone = 〜〜〜」を下記のように書き換える。


[Date]
; Defines the default timezone used by the date functions
date.timezone = Asia/Tokyo

これで設定が変わります。
もちろん設定後はxamppのapacheを再起動してください。


    • 上記の内容が記述されている行を見つけるには…「検索(ctrl + f)」で行いましょう。テキストエディタwebブラウザ、その他様々なアプリケーション内で使えます。(f = FINDの略)
    • これの発展形で「検索置換(ctrl+ rまたはf)」はぜひ使いこなせるようになって欲しいと思います。プログラミングやタイピングなど、様々な場面での作業スピードアップが望めます。(r = REPLACEの略)
時間設定をプログラム上で変えたい場合

プログラム上の任意の場所でタイムゾーンを変更したい場合は…

<?php ini_set("date.timezone", "Asia/Tokyo"); ?>

これで変えられます。




その他、雑学

◯「.ini」
initializationの略。初期設定データが書かれているファイル。
◯「.conf/.cfg」
configurationの略。ユーザー独自の環境設定などが書かれるファイル。
演算子について

先週のPHP演算子のお話しのとき、「==」や「<=」、「&&」なんかの説明がありました。もちろんここら辺の演算子は本当に良く使うものなので覚えておく必要があります。


そして「<<」や「>>」の左右シフトという演算子がありますが(もちろん授業中にお話しがありましたが…)、この左右シフト、私がSEをやってた頃はよく使う演算子の1つでした。

何に使うかというと…
一言にマスクビットの制御です。
IllustratorPhotoshopでもあったマスクです。
要は、ある物に対して任意の範囲内で囲って抽出するということです。プログラミングで言えば、何かのキーの照合や部分抽出などに使います。


マニアックな部分ですが、例えば…

1.2進数で00110010という値があったとします。(10進数では50)

number = 50;

2.この値の下位4桁のみを抽出したい場合、00001111というマスクビットをあてて抽出。00000010という値が結果として出る。(16進数で0x02)

mask = 0x02;

rst = number & mask; 

3.次に上位4桁を抽出。上記00001111のマスクビットを左に4回シフトすれば上位4桁を抽出する為のマスクビットができます。

rst = number & (mask << 4); 
↓マスクビットのしくみ
↓同じ桁で、両方共1の場合のみ1を返す。それ以外は0を返す。

00110010:抽出される側の値
00001111:マスクビット
--------------------------
00000010:結果


上記の例は16進数のマスクです。0xFFFFFFとかの16進数です。
見覚えありますよね。Webで使うカラー表記が16進数なんです。
頭に#を付けたりして#FFFFFFとか書きますよね。

JavaScriptなんかと組み合わせて動的に色を変えたりできそうですね。マスクビットをシフト操作してマスクし、色合いを足したり消したり…。
いらないか…w


正直ここは…マニアック過ぎましたね^^;

PHPの練習を行う前の下準備

xamppとDreamweaverをつかったPHPの練習を行います。

xamppを使ってローカル環境で練習を行う場合、確認・表示にはwebブラウザを使うのですが、作成したソース等のドキュメントを表示するのには決まった場所にそれらが格納されている必要があります。


1.格納場所の確認

「C:\xampp\htdocs\」

xamppのhtdocs内に、実際に使うドキュメントが格納されます。

2.Dreamweaverでのサイトの設定

注意すべき点は、
サイト設定>「サーバー」タブ内にあるサーバーフォルダとWeb URLが違う事。

サーバーフォルダは
「C:\xampp\htdocs\○○○/」

Web URLは
http://localhost/○○○/」

中心点と基準点|Flash時計の針

クラスの皆さまお久しぶりです。
どうか先日受けたCAのアカデミーのことはどうかお忘れください...
(受かった気がしませんので^^;)


中心点と基準点について

Flashで作ったシンプル時計…

デジタルなのにアナログ...。
なんかおもしろいですね^^


Flashをやっていて意外とある落とし穴が、(ムービークリップなどの)オブジェクトの「中心点」と「基準点」です。まだオブジェクトの中身が1枚のグラフィックしかない今では然程問題にならないのですが、オブジェクトの中に更にオブジェクトが入ってて、更にその中に・・・とかなると結構大変です。


ちなみに…


基準点

基準点はムービークリップを回転するなどして動かす時の、中心になる点のこと。
シンボル化するときに3×3の白いマスで一箇所だけ指定する黒い点の位置で、おおよその位置を指定できる。ムービークリップの1階層中に入る(ダブルクリックで入る)と見える“+印”で確認できます。

シンボル化した後の編集は、ムービークリップの1階層中に入った状態で、+印が任意の位置になるように「グラフィック自身を」移動させる。



中心点

中心点は自由変形ツールを使った時に変形の基準となる点のこと。
シンボル化した後、自由変形ツールを使ったときに現れる白い◯で確認できます。

シンボル化した後の編集は、ステージ上にあるムービークリップを選択(シングルクリック)し自由変形ツールを選ぶと表示される白い◯を、任意の位置に移動するだけ。



…という感じであります。



まとめ

+が動作用の基準点。

◯が編集用の中心点。

スクリプティング(プログラミング)をもっとわかりやすく

ActionScriptJavaScriptなどに使える、スクリプティング(プログラミング)基礎についての解説が書いてある過去記事です。
ちょうどいいタイミングなので紹介します。
(ちょっと遅いかもですが)


JavaScript(jQuery)

Webデザインノート|JavaScript accordionMenu ・関数について

※こちらは、jQueryアコーディオンメニューを例にとっての解説になります。