ギークなお姉さんは好きですか

恋焦がれる理想の男性・ギークに近づくため、プログラミングがわかるお姉さんを目指すブログ

11日目 ゲストブック作ったよ\(^o^)/

日記

いい嫁とサシでデートしてきた\(^o^)/

やー。
いいね。
リア充すぎてこわいわ・・・っ
ぶっちゃけ PHP の話はマッタクしてないからね!
女2人ゆうたら、やっぱ恋バナですよ恋バナ。
恋バナ充。
パスタとピザをシェアして食べて、最後に 「スイーツありますか?」 て聞いたら
「ドルチェならあります」 て言われた/(^o^)\ ドルチェ(笑)

もう1人のイイ嫁からも 「恋バナしたい!」 てメールもらったにょ!
バレンタインチョコももらっちゃったもんね!いいだろいいだろ!!
写真うpしようと思って体裁ととのえてるうち、気付いたら全部食べていた。
動物的本能おk。
紅は自由だ。

ん。
恋バナkwsk?
教えてあげないヨ!ジャン♪
サクサクさんかくポリンキー\(^o^)/


そういえばITmediaにインタビューされました。
「そういえば」 とは何だ。
謝謝!





テキストベースのゲストブックに書き込んで!

メールはやっぱやめた。
だって難しいんだもん(`・3・)
うわああごめんなさい!もっとぶって><
とりあえず、もう少し修行積んでから後編やる。
今日はテキストベースのゲストブック作るよ。
以下ソース。
※タグの最初は全角にしてあります。



1 <html>
2 <head>
3 <title>ゲストブック</title>
4 </head>
5 <body>
6 <h1 style="background":#cccccc">ゲストブック(書き込み)
7 </h1>
8 <form method="POST" action="guest_write.php">
9 お名前:
10 <input type="text" name="name" size="20" maxlength="30" /><br>
11 メッセージ:
12 <input type="text" name="message" size="70" maxlength="255" /><br>
13 <input type="submit" value="送信" />
14 </form>
15 </body>
16 </html>

サンプル:guest_input.php


これの説明は省略。
普通の入力フォームだ。
同じようなことを既に何度もやってるっちゃね。
参考:3日目 今度はあなたに挨拶したい><

とゆことで、今回も2種類作るよ。



1 <?php
2 $file=fopen("guest.dat","a");
3 flock($file,LOCK_EX);
4 $line=date("Y年 m月 d日 H:i:s")."¥t";
5 $line.=$_POST['name']."¥t";
6 $line.=$_POST['message']."¥t";
7 fputs($file,$line."¥n");
8 flock($file,LOCK_UN);
9 fclose($file);
10 header("Location:guest_input.php");
11 ?>




このソースを見たとき、一番 「はぁ?」 と思ったのが4〜6行目。
変数 $lineに次々といろんなデータを代入している。
これはおかしい。
だって変数は、一度代入しても、再び代入しなおすと中身が変わるはずだもん!
参考:3日目 今度はあなたに挨拶したい><


どうも5,6行目の $line.←このドットがクサイ。
参考書の印刷ミスかと思ってスルーしそうになったけど、きっとコレには意味があるはず。
独自に調査した結果、以下のことが判明。


$line="べにぢょ"
$line.="ナイスギーク"
print("$line");

実行結果:test.php


おおお!中身が上書きされていない!!!
一応、.(ドット)抜きのパターンもうpしてみた。
実行結果:test2.php


イエス!イエスイエス!やはりな!思ったとおりだ!!!
”女は上書き保存 男は名前を付けて保存”って名言があるじゃんかー。
以前、ブログでこの話をしたらdanちゃんからトラバもらた。
嬉しかった。
というのはさておき。
$line. は男だ。
名前をつけて保存しちゃうのだ。
フランス語風に言うと男性変数だ。
$line だけだと女。
上書き保存。
フランス語風に言うと女性変数なのさ!
へへん!まるっとお見通したぞ!


これさえ分かれば、このソースの山場を越えたも同然っ。
あとはまたーりいきまっしょい。



2行目。


fopen(ファイル名,モード)
指定されたファイルを指定されたモードで開きます。

参考:10日でおぼえるPHP5 入門教室


guest.dat を "a"というモードで開いて、それを $file に代入。
モードの説明はこのへん
"a" は書き出し用のみでオープンする、とな。
OK。



3行目。

flock
flock()は、指定したファイルをロックする関数です。

参考:PHP関数講座:flock - そふぃのphp入門

参考書によると、あるユーザAがファイルを開いて書き込んでいる間に、
別のユーザBが書き込みを行ったら困るから、あらかじめロックしておく必要があるらしい。

上記サイトによると、LOCK_EX は読み書き両方禁止なんだって。
ちなみに、ロックマンエグゼとは関係ない。
そもそもそんなに似ていない。



4〜6行目は上で説明したとおり。
そうそう。
"¥t"はタブの意味なんだって。
データをどこで区切るかを明確にしたいとか。
へぇ。



7行目。

fputs関数
fputs(ファイル・ハンドラ,書き込む文字列)

参考:10日でおぼえるPHP5 入門教室

ふぁいる・はんどら?
今回の内容とは関係ないけど、ググってたらこんなんめっけた。
参考:名前を使用して、エントリのファイルハンドラ (読み込み専用) を取得する

ファイル・ハンドラ=読み込み専用 と解釈。
つまり、読み込み専用ファイル guest.dat に$line の内容を書き込め、ということか。
そだ、"¥n" ってのは改行の意味ね。
これを.(ドット) で連結させているよ。



8行目は3行目と一緒や。
今度は LOCK_UN だから、ロックを破棄しているのね。
書き込みが終了したから破棄。
そじゃないと次の人が書き込めないもんね。



9行目。

fclose
fopen()関数 で開いたファイルに対する操作が終わったら閉じます。

参考:fclose()関数/PHP関数リファレンス



10行目。
これは確か、リダイレクトさせる関数。
参考:べ、べつにブクマ禁止したいわけじゃないんだからっ!





でけた!終了!
書き込んだ内容はこのへんで見れるはず。
サンプル:guest.dat



ちかれた。
寝るぞ。
おやすみなさい(・∀・)/~~