10日目 めぇるみぃ!! 【前編】
- 2008/01/30(水) 00:00:00
日記
引っ越した\(^o^)/ターター!!
でね、つい先日までネット環境がなかった。田口さんに 「大丈夫なの?」 て心配された。
同情するなら監禁してよ!!
「こんなに脆弱性だらけじゃないか!仕方ない子だ。ライフハックしてやる!」て言われたい><
落ち着け。絡みすぎだ。ごめんなさい。以後気をつけヌ。
メール関数でネゲットしよう♪
けんすうが言っていた。
「メール関数を制する者はネゲットを制す」 と。さすがネゲッターの言葉は説得力がある。
ちょっと違ってたかな・・・でもだいたいそんな感じだろうと意訳。
PHP を使うとメールが送れる (or 受け取れる) らしい。
普通のメールのやり取りは糸電話ちっくというか、
相手のコップと自分のコップがなきゃダメだけど、PHP はなんだろ、私書箱?
とにかくもっと気軽な感じなのさ!
紅はメアドを公開してなくて、代わりにレンタルCGIのメールフォームを設置している。
てゆかコレ超ひさびさに見たw ちょっと可愛い・・・なかなか可愛いとこあるな・・・。
ソースちょろっと見たけど、さては PHP だよね?
ってことは、メール関数をマスターすればメールフォームも自作できるじゃん!
すんげぇすんげぇ!! がんばろう。
参考書に従って作るとすると、リスト1とリスト2の2種類、作成せねばならぬ。
しかもリスト2は php.ini の設定をいじる必要があるとかないとか。
エー。お願い、ないって言ってよハニー(*´・Д・)
長くなりそうなので2回に分ける。今日は前編。
じゃ、ソース貼るぞ。
参考:10日でおぼえるPHP5 入門教室 ●メール関数で訪問者の声を受け取ろう
※タグの最初は全角にしてあります。
1 <html>
2 <head><title>ギークなお姉さんは好きですか(めぇるみぃ!)</title></head>
3 <body>
4 <h1 style="background:#FFCCCC; color:#663333;" >
5 ギークなお姉さんは好きですか(めぇるみぃ!)</h1>
6 <form method="POST" action="sendmail.php">
7 <input type="hidden" name="email"
8 value="lovecall@geek.jp" />
9 <input type="hidden" name="_subject"
10 value="ギークなお姉さんは好きですか" />
11 <input type="hidden" name="_result"
12 value="<?php print($_SERVER['PHP_SELF']);?>" />
13 <table border="0">
14 <tr>
15 <th align="right">名前:</th>
16 <td><input type="text" name="name" size="20" maxlength="30" />
17 </td></tr>
18 <tr>
19 <th align="right">E-mail:</th>
20 <td><input type="text" name="_from" size="50" maxlength="255" />
21 </td></tr>
22 <tr>
23 <th align="right" valign="top">自由記入欄:</th>
24 <td><textarea name="memo" cols="50" rows="5">
25 </textarea></td></tr>
26 </table>
27 <input type="submit" value="送信" />
28 <input type="reset" value="クリア" />
29 </form>
30 </body>
31 </html>
サンプル:mail_input.php
おお。ほとんど html だ。
ねね、「めぇるみぃ!」って死語かい?
昔はよく見かけたのになあ。あの侍魂の健さんでさえ言ってた気がする。
当時はまさか自分に言ってると思わなかった。完全スルー。メールを送るって発想がなかった。
今なら分かる。俺が送らなくても代わりはいるもの。とか、そゆう綾波はいらんよ!
さぁ!今こそめぇるみぃっヾ(`・д´・)ツ))
1〜5行目は省略。
6行目。
全く同じものを使った記憶がある。
POST 形式でユーザが入力したデータを sendmail.php に送るよ、というアレだ。
で、コレを使うとsendmail.phpの方の $_POST に、ユーザが入力してくれたデータを
自動的に代入してくれるんだった。
参考:3日目 今度はあなたに挨拶したい><
7〜11行目は下記サイトが分かりやすい。
参考:隠しデータを送信する
12行目。value の中身がphpだ。
$_SERVER は何度か出てきてる気がする。
参考:7日目 ヘッダ情報が見たい!知りたい!晒したい!
そうそう。グローバル変数。いろいろ取得できる子だ。
今回は PHP_SELF を取得して、それを print するらしい。
$_SERVER['PHP_SELF']は現在実行されているスクリプトのパスを返します。
参考:10日でおぼえるPHP5 入門教室
もうちょい具体的に。
PHP_SELF
現在実行しているスクリプトのファイル名です。ドキュメントルートから取得されます。
$_SERVER["PHP_SELF"];
として使いますが、例えば・・・
URLが、http://www.test.com/index.phpなら
/index.php
http://www.test.com/somedir/somefile.phpなら
/somedir/somefile.php
が返されます。
(・∀・)ィィネ!!分かりやすい!
ってことは、この場合は mail_input.php が返ってくるのかな?
ふーん・・・・・
あああああ!分かった!いま分かった!!!!!なんだ、そゆうことね!
自分で7〜11行目の参考リンク貼っておきながら把握してなかった。
8行目の value に入れてるメアドは、自分が受信したいメアドを書くのか。
んで、件名は自分がこのメールフォームから届いたメールだと認識できる名前にするのね。
そうした方が振り分けとか便利だもんね。
だから12行目だけいきなり php が出てきたのか。
ここはユーザが入力したデータだから、紅の意思が介入する余地がない。
あぁあぁ、だから print。なるほどなるほど。
やーごめんごめん!ちょっと勘違いしてたw
うっかりユーザ気分で、受け取るための設定を全く考えてなかった。
大丈夫、もう完全に理解した。
で、なんだっけ。そだ。PHP_SELF だ。
$_SERVER['PHP_SELF'] で返ってきたmail_input.php を print しろ、ということね。
ふんふんふーん♪いい具合にしっくりきた。
このたびはお騒がせして誠にスミマセンでした><
13〜26行目はマジで大丈夫。だってこれは普通の table タグですもの。
27、28行目もおk。送信ボタンは3日目でも出てきたもんね。
はあー。よかったよかった。まったく一時はどうなることかと思ったよ。
でも後編がきっとキツいんだろな・・・・
次回は土曜の夜あたりに。こーはんへつづく!
この記事に対するトラックバック
この記事のトラックバックURL
[PHP]参考書がいけないのかな
「ギークなお姉さんは好きですか 10日目 めぇるみぃ!! 【前編】」に掲載され「ギークなお姉さんは好きですか(めぇるみぃ!)」で公開されているソースに脆弱性があるのは当該記事へのコメントやトラックバックで指摘されている通り。たとえばPHP_SELFはそのまま出力で
- From: 岩本隆史の日記帳 |
- 2008/02/14(木) 22:07:27
これはやばい。
ギークなお姉さんは好きですか 10日目 めぇるみぃ! フォームからの入力値を信用しちゃいけないって例になりまくりの悪寒。 このまま行くとこんな感じになりそう。ソース見ないで言うのも何だが。 SPAM 入力値を元に宛先を決めるのでそうなっちゃう。 XSS こんな感
- From: Diary - rider.withgod.jp |
- 2008/01/30(水) 10:28:03
この記事にコメントする
- HOME |



この記事に対するコメント
がんばれ
メールも大事ですが、文字列を制するものは全てを制するですよ。
コンパイラもOSも全てが文字列で構成されていると言っても過言ではありません。
文字列処理と言う地味な部分をもっと鍛えればギークに成れるかも。
がんばれ!
おおー、すごい。
10日目までくると、なかなか役立ちそうなノートみたくなってる!すごーい。
こんにちは♪
お勧めサイトです!よろしくね!!!
http://www.bbb369.net/?jj
spam の踏み台になる恐れがありますよ
> 8行目の value に入れてるメアドは、自分が受信したいメアドを書くのか。
hidden に送信先アドレスを入れたらダメです。
このフォームを使うユーザは hidden の値を変更できるので、
送信先を自由に変更できることになります。
POST されたデータを処理するプログラム実装にもよりますが、
このままでは spam の踏み台になる恐れがあります。