コレやってみたい! - べ、べつにブクマ禁止したいわけじゃないんだからっ!

  • 2007/11/26(月) 23:00:00

日記

19時前に会社出たのに、ちょっぴりスイーツ気取りで
「一駅歩いてみようかな☆」 なんて思ったのが間違いだった。
超☆迷子。結局おうちに着いたのは23時。これはひどい。
洗面台へ向かい、手を洗う。鏡をのぞくと、なぜか涙が流れていた。
きっとつらかったんだと思う。
紅は地図も読めないし話も聞かない女だ。
この前あきやんにそう言ったら 「そんなことないよー」 と言ってくれたけど
これだけは譲れない。だって絶対そうだもん。





はてブを禁止してみたい!

はてなブックマークを禁止する方法 ( Geekなぺーじ さま )


このエントリを見かけたときからあきやんに聞こうと決めていた。
で、昨日聞いた。
まだまだツメが甘い理解だけど、忘れないうちに理解した範囲でメモ。
※最初のタグは全角にしてあります。



1 <?php
2  $agent=$_SERVER['HTTP_USER_AGENT'];
3 if(strncmp('Hatena',$agent,6)==0{
4  header("HTTP/1.0 302 redirect");
5  header("Location:http://www.geekpage.jp/ ");
6 }
7 ?>



知らない単語がいっぱいある。
でも if は昨日やったから分かる。ナイスギーク! >べにぢょ


ここに書かれてる内容を日本語に訳すと、
「はてなが見にきたら http://www.geekpage.jp/ に飛ばせ」って言ってるぽい。ざっくりだけど。
あきやんのありがたいメモがあるのでうpしとこう。


     


これは分かりやすい。
最落ナシ1円〜でどうだろう?ダメだろう。


はてブするときっていうのは、どうやらはてながそのページを見に来てるらしい。
あれが JavaScript だというのは知ってる。
最初ブックマークレットの使い方が分からなくて、JavaScript うんちゃらかんちゃらというのを
アドレスバーに直接コピペしていた。知ってるといってもその程度なんだけど。



コードを解釈する。
2行目は、すごくちゃんと説明してもらった気がするけど忘れた。
あ、いや!ヒントもらえば思い出す!聞いてたって!ちゃんと話聞いてたって!!
泡盛飲みながら聞いてたのが良くなかったか・・・でも大丈夫。頭のどっかにはあるはず。


とりあえずググる。


サーバ変数とはサーバが生成する変数です。
サーバはヘッダやパス・スクリプトの位置などいろいろな情報を持っていますが、
そのサーバの情報にアクセスできる変数だと思って下さい。
「ブラウザ情報」だとか「IPアドレス」だとかもこのサーバ変数で取得できます。
この変数1つで取得できちゃうので、よくある「あなたのお使いのブラウザは○○です」
なんて表示も1行スクリプトで済ませられちゃいます。

参考:サーバ変数について


OH!Yes!!
そだそだ。そういえばそうだった。思い出してきた。
あきやんにサーバ〜ブラウザ間でやり取りしてる情報を見せてもらった。
んで、このへんの記事を思い出して納得した記憶。
当時はなんでバレてるのか全然分からなかったにょ。



コードに戻る。
その情報の中の HTTP_USER_AGENT の情報を見ろ!って指定してる、んだった気がする。
して、それを $agent に代入する、と。


3行目。
もし、ふにゃららが0だったら、って言ってる。
ふにゃららの中身はよく分からない。
どこが分からないか?まず strncmp が分からない。
ググろう。


strncmp - 最初の n 文字についてバイナリセーフな文字列比較を行う

参考:strncmp - Manual



strncmpn は数字を意味してる、って聞いた。



この関数は strcmp() に似ていますが、 各文字列から(最大)文字数(len ) を
比較に使用するところが異なります。



おぉ。記憶と説明がつながった。文字数が関係してるから n が入るのね。
(カッコ)の中を見る。
'Hatena',$agent,6 は、確か $agent の最初の6文字を見ろ、ってこと。
その6文字が Hatena だったら、ってことだよね。
うん。だったらなんなのさ!
あぁ、さっきのサイトに戻ろう。せっかちイクナイ。まだ慌てるような時間じゃない。


返り値
str1 が str2 より小さい場合に < 0、str1 が str2 より大きい場合に > 0 、
等しい場合に 0 を返します。



つまり、6文字目までが Hatena だったら0が返ってくるってことか。
それが超イコールで0と結ばれてるから、3行目を日本語に訳すと
ブラウザがサーバーに送ってきたデータの HTTP_USER_AGENT の部分、
ココの最初の6文字が Hatena だったら if の条件式が成り立つ、という意味。
条件式が成り立ったら { 以下を実行するのが if。そう勉強した。
参考:5日目 もし私が女子高生だったら



4,5行目。
header は関数らしい。


header - 生の HTTP ヘッダを送信する

参考:Header


ぜんぜん関係ないけど、コレ最初見たとき ”一生(いっしょう)のHTTP ヘッダ” かと思って
ちょっとわらたw
一生てなんだよ!すごいウケる。そぐわない。場違いな言葉だ。



また逸れた。
ていうか、header はぶっちゃけよく分からないの。
だからとりあえずいいや。
でも4行目の HTTP/1.0 302 redirect は、リダイレクトしろよ、って言ってるんだと思う。
で、5行目でリダイレクトする場所を指定してるんだと思う。それはガチ。




オーケー!
今日はこのへんでおk。とりあえずやってみる。
サンプル:hateb.php



Σででできるじゃん!!!!!!!!!!!

あ。Geekなぺーじの追記に書いてあった。そっか、できるんだ・・・
いいの。いいの別に。ただ、ちょっとやってみようかなって思っただけだし・・・。





寝よう。





追伸

画像出力の件、コメントくださった方ありがとうございました!
あと、あと、おみくじやってくれた人!すごく嬉しかったですありがとうございます!!
+++++!!

LINEで送る

5日目 もし私が女子高生だったら

  • 2007/11/25(日) 17:00:00

日記

あるふぁぶろがー が あらわれた!
べにぢょ は こうふんしている!


差出人:べにぢょ TO:けんすう
今から行きます!遅くなっちゃってごめんなさい><

差出人:けんすう TO:べにぢょ
気にしなくていいよ!女子高生の格好で来れば大丈夫だと思うよ!!


と言われたので、女子高生の格好で勉強会に行った。
途中から急きょ百式の田口さんが合流。
ちょw今日制服なんだけどwww
ち、ちがうんです!ホントはこんな子じゃないんです!!
そうでもない。


出会って5分で 「べにぢょはM?」 と指摘された。
原田さんといい田口さんといい、アルファな人はドSが多いですね!(喜)
田口さんに紅の似顔絵を書いてもらった。


 


まんざらでもない。


田口さんが飲み会からログアウトした後は、けんすうと一緒にあきやんちへ行った。
照明やばすw シンプルで居心地が良すぎる><
あなたの知らない照明術』 と 『持たない暮らし』 の実践編を見た。
「わたしたち今、超リア充だよね!」って言ったら、
あきやんが 「まったぐリア充ウ 俺一人!!」 って歌ってくれた。
それを歌えるのはネット充の証拠だ。


ちょっと遅くなったけど・・・と、あきやんから誕生日プレゼントで 『UNIXという考え方』 の
ご本をもらった!わぁい♪
いずれ 『UNIXはOSではない。考え方である。』 という本を出版したい。
それは盗作だ。





 反省

今回の勉強会はあまり頑張れなかった。
セッション関数を使って数当てゲームというのを作ろうと思ったんだけど、
難しすぎてぜんぜん集中力が持たなかった。
持たない暮らしだ。悪い意味で。

あやうくヽ(`Д´)ノ てなりそうだったけど、それはダメぜったい><
だってdanさんに紹介してもらったもん!頑張るんだもん><
あの日以来、danさんにDANDAN心魅かれてく紅ガイル。




if...else命令について語ろうか

とゆことで、セッション関数の前に if...else をやる。
これは GET のときにちょろっと出てきた。
ちなみにあれは switch で書いた。
で、 if...else でも実現可能って参考書に書いてあるのを読んだ。
あの時は読んだだけだったので、実際に使ってみる。
せっかくなので、復習も兼ねて POST を使ってみる。
参考:3日目 今度はあなたに挨拶したい><

またinputとoutputの2種類作るけど、これはinputだけでもいいらしい。



コメント欄より

別にoutput.phpは作らなくてもいいですよ。
input.phpの中で
<? if $_POST['method'] == "output" ?>
こんにちは、<?php print($_POST['name']); ?>さん!
<? else ?>
<form method="POST" action="input.php">
お名前:
<input type="text" name="name" size="20" maxlength="30" />
<input type="hidden" name="method" value="output" />
<input type="submit" value="送信" />
</form>
<? end ?>
見たいにすれば。(phpは知らないのでコードは適当)
あとこのフォームにはCSRF脆弱性があります。
XSSとあわせて勉強するといいかもしれません。



コメントくださった方、ありがとうございました!
「コメ欄のクオリティが高すぎる!」 ってあきやんが言ってた。紅もそう思う。
このブログのコメント欄はもっと評価されていい。



閑話休題。
ソースを貼る。
※タグの最初は全角にしてあります。


1 <html>
2 <head><title>もし私が女子高生だったら</title></head>
3 <body>
4 <form method="POST" action="output_if.php">
5 私は 
6  <select name="zokusei">
7   <option value="jk" selected>女子高生</option>
8   <option value="dg">リア充な大学生</option>
9   <option value="else">ネット充なギーク</option>
10 </select> です!
11 <input type="submit" value="送信" />
12 </form>
13 </body>
14 </html>


基本的に前回と一緒なので説明は割愛。
ただ、参考書にプルダウンの場合の解説があったので
今回はプルダウンを使ってみた。でもまぁ、これは html だ。
本命の output のソースを貼る。


1 <html>
2 <head><title>もし私が女子高生だったら</title></head>
3 <body>
4 <?php
5 if($_POST['zokusei']=="jk"){
6  print('<img src="画像URLその1">');
7 }elseif($_POST['zokusei']=="dg"){
8  print('<img src="画像URLその2">');
9 }else{
10  print('<img src="画像URLその3">');
11 }
12 ?>
13 </body>
14 </html>



if...elseというのは、参考書からまんま引っ張ってくると


if(条件式1){
  条件式1がTRUEの場合の処理
 }elseif(条件式2){
  条件式2がTRUEの場合の処理
 }else{
  すべての条件式がFALSEだった場合の処理
 }



だってさ!
TRUE とか FALSE とか言ってるけど、要するに○○だったら××、そじゃなければ□□、
ということ。おk、把握。
これを踏まえてソースを見てみよう。


5、6行目は、もし POST された zokuseijk (女子高生の略)だったら、
画像その1を出力せよ、と言ってる。
== っていうのは、代入とは違う。
なんていうか、文字通りイコール。今度は本気のイコール。超イコール。だから2回書く。
今回、 print で画像を表示させてるんだけど、これは昨夜ついったーでナイスギークに
アドバイスをもらった。














ナイスギーク!
ナイスガイに替わる言葉として、ナイスギークを強く推したい。
あるいは、ナイスファイト的に 「ナイスギークです!」 ってのも良い。
たぶん紅しか使わない。
tetsunosukeさん、ありがとう!tetsunosuke+++++!!



ということで、またまた話が逸れたけど今回は画像を出力してみる。
ちなみに、 print('<img src="画像URL">'); のシングルクォーテーションを
ダブルクォーテーションで書いたらエラーが出た。html 使うときはシングルじゃないとダメぽい。
そしてこれはけっこう大事な気がする。覚えておこう。


で、7,8行目。
もし POST された zokuseidg (大学生の略)だったら、
画像その2を出力せよ、と言ってる。
うんうん、イイヨイイヨ。大丈夫、紅はちゃんとついていけてる。


最後。9〜11行目。
上記のどちらでもなかったら、画像その3を出力せよ、って言ってる。
わかる。わかるよ、このコード・・・っ!

それではサンプルを。
サンプル: input_if.php

ネット充なギーク画像は、あきやんの許可は取った。
けんすうの許可は取ってない。大丈夫かな・・・。
スカイプ削除されたらどうしよう。そしたら謝ろう。





はぁ。今日もすごく頑張った。
エントリ書き終わると常にHPが黄色な気がする。
まだ if...else だってのに消費しすぎなんだよjk!これは常識的に考えての略。
だってホントは女子高生じゃないし (* ´・з・)σ


でもねでもね、今日はどうしても書いておきたいことがある。
上のif命令使ったPHPがちゃんと動いたのを確認したとき、
実感として初めて 「プログラミングって楽しい!」 って思った。すごく思った。
自分で考えて動かすって楽しい。本当に素晴らしい。
紅は今日はじめて自分でコードを書いた気がする。参考書丸写しじゃなくて。
こんにちは PHP 。ふつつかものですが、これからもどうぞ、末永くよろしくね!



では、HP回復のために今からあきやんと遊びに行ってくる!
ララバイ!ナイスギーク!!

LINEで送る

4日目 おみくじとか作っちゃうかモナー!

  • 2007/11/20(火) 00:00:00

日記

【べにぢょの1日】

朝起きる
 ↓
PC起動
 ↓
ギークで検索
 ↓
『ギークなお姉さんは好きですか』 をクリック
 ↓
S・E・O! S・E・O!!

 (中略)

帰宅する
 ↓
PC起動
 ↓
ギークで検索
 ↓
『ギークなお姉さんは好きですか』 をクリック
 ↓
S・E・O! S・E・O!!


ということを繰り返してたら、ある日突然1ページ目に『ギークなお姉さんは好きですか』を確認。





いやー、SEO対策ってちゃんと報われるんですね^^^^^^
最終的には ”ギーク” と検索すると ”もしかしてべにぢょ” と出るところまで持っていきたい。
いや、そのりくつはおかしい。

ていうか、単にこのブログをブックマークしてないからなんだけど。
だってぷにるのリンクバーがいっぱいなんだもん><
TinyURLとか不要ですか?でもなかったらイザというときイラっとするしなぁ。
まぁいいや。[あとで考える]





配列を知ろう

やばい、もう勉強会から一週間経ってるではないか。早いトコ復習せねば。
配列おぼえたときは「ちょwココまで来たらもう、Majiでコンパイル5秒前じゃん!!」って
超・テンション上がったのに。
でも PHP ってコンパイルしないんでしょ?知ってる。もうとっくに気付いてるよ。
どうせみんなで紅のこと笑ってるんでしょう。いいよ。笑えばいいと思うよ。笑う角には福来る。



配列とは

前々回、変数について勉強した。
あの時の変数は1つにつき1つのデータしか入れられなかったけど、
配列というのはたくさん引き出しがあって、複数のデータを格納?できるらしい。


変数は、基本的に1つの値しか代入することができません。
(中略)
PHPでも1つの変数に複数の値を持たせることができます。
それを「配列」と呼びます。

参考:配列 / PHP入門



意味は理解した。実際やってみる。
※タグの最初は全角にしてあります。


1 <html>
2 <head><title>配列の練習</title></head>
3 <body>
4 <?php
5   $lovecall="べにぢょ";
6  print("$lovecall");
7  print("<br>");
8   $lovecall=array("ギークなお姉さん","辮髪なお兄さん","けんすうのあほ");
9  print("$lovecall[0]"); ?>
10 </body>
11 </html>


サンプル:hairetu_test.php



説明してあげるね!(一発で表示されて感動した)

7行目まではOKだよね、この前と一緒。$lovecall に"べにぢょ"を代入して表示。で、改行。
新しいのは8,9行目だ。
今度は $lovecall に3つのデータが入ってる。
array というのは配列関数と言うらしい。
参考書の説明をまんま引用すると、


関数
[戻り値=] 関数名([引数1,引数2,...])



分かった?紅は分からない。
Yahoo辞書

array
[動](他)[III[名]([副])] 1 ((通例受身))((形式))〈軍隊などを〉配列する, 配置する,
(…に対して)陣容を整える((against ...))


て言ってた。たぶん文字通り 「(カッコ)内の値を左の関数の中に置くよ」 ってことだと思う。


ソースに戻る。
$lovecall=array("ギークなお姉さん","辮髪なお兄さん","けんすうのあほ");
とあるから、$lovecall に "ギークなお姉さん","辮髪なお兄さん","けんすうのあほ"
という3つのデータを arrayするよ!と言ってる。

で、その次の print("$lovecall[0]") で表示させてるんだけど、
この [0] っていう数字は、データに自動的に振られるらしい。あきやんが言ってた。
0から順に振られるので、この場合は "ギークなお姉さん" が0、"辮髪なお兄さん" が1、
"けんすうのあほ" が2、ってことになる。
今回は0を指定したので "ギークなお姉さん" と出るのね。
ためしに2を指定すると "けんすうのあほ" が出る。

サンプル:hairetu_test2.php

2回言ったのは深い意味はない。気持ちの問題だ。





配列を使っておみくじを作ろう

ちょっとギークっぽくなってきた!!!
『おみくじとか作っちゃうかMona-』 ていうサイト開設しようかな!!!!!
その前にソース貼るね。


1<?php
2  //おみくじデータの用意
3  $aryTitle=array("大吉","中吉","小吉","吉","凶");
4  $aryKuji =array(
5   "大吉"=>"ラッキー”今日は超ハッピー!!",
6   "中吉"=>"良かった良かった。今日も元気に頑張りましょう。",
7   "小吉"=>"小さな幸せを大事にネ。",
8   "吉" =>"今日も無難に良い1日を・・・",
9   "凶" =>"ムムムな今日は大人しくすごしましょう。");
10  //おみくじのシャッフル
11  shuffle($aryTitle);
12 ?>
13 <html>
14 <head><title>今日の運勢は?</title></head>
15 <body>
16 <h1 style="background:#cccccc">今日の運勢は?</h1>
17 <dl>
18 <dt style="font size:14pt;font-weight:bold">
19  <?php print($aryTitle[0]);?></dt>
20 <dd><?php print($aryKuji[$aryTitle[0]]);?></dd>
21 </dl>
22 </body>
23 </html>




超つかれた。死にそう。
わたし、このおみくじがちゃんと動いたらお風呂入って寝るんだ・・・。
2行目の // 以下はユーザには見えない自分用メモ。ソースにも反映されない。
3行目は変数の名前が違うけど、やってることは上と一緒。
$aryTitle の中に "大吉","中吉","小吉","吉","凶" という5つのデータを配置。

4行目からちょっと慎重に行こう。
これは連想配列というらしい。
参考書によると、

array("キー名"=>"値" ,"キー名"=>"値",...)
このように定義した連想配列の値は「$配列名['キー名']」の形式で
アクセスすることができます。



えーと。
つまり、大吉を呼び出せばその中身が出てくる、ということ。
数字じゃなくて、中身が連想できる名前が付けられるから連想配列、っていうらしい。


たとえば

$lovecall=array(
  "表の顔"=>"リア充",
  "裏の顔"=>"ネット充",
  "理想の私"=>"ギークなお姉さん",
  "頑張った自分へのご褒美"=>"スイーツ");


とか。こんな感じ。連想ゲームだ。引き出しがたくさんある女っていいよね!



話を戻してソースの続き。
11行目で shuffle というのが出てくる。以下、参考書より引用。


shuffle(配列)
指定された配列内の要素をランダムに並べ替えます。



OK。$aryTitle 内の "大吉","中吉","小吉","吉","凶" を並べ替えなさい、という意味ね。
PHP はいったんココで終わる。次から html だ。
html の説明は省略。詳細は下記サイトを参照せよ。
参考:定義型リストを作るTAG indexさま)


19行目で $aryTitle の0番目のデータを表示しなさい、と言ってる。これは上でやった。
番号振ってないけどshuffleして最初に来たデータを print ってことだよね。
問題はその次だ。

($aryKuji[$aryTitle[0]])

これ、[カッコ] が二重になってる。意味不明。
でもココは先週あきやんに聞いたの!
えとね、プログラミング言語っていうのはみんなそうらしいんだけど、
こういう場合は ”内側から評価” するらしい。
左から順番に読んでいくとイミフなんだけど、PHP 的に考えると内側から読むんだって!
だから、まず最初に $aryTitle[0] を見る。
これは繰り返しになるけど shuffle して最初に来たデータのこと。
ここで "吉" とか "大吉" とか、ランダムで何かが入る。
その次に $aryKuji[ ] を見る。
そうすると $aryKuji["吉"] とか $aryKuji["大吉"] とか、そんな感じになる。
4〜9行目の連想配列でそれぞれに文字列を入れてるので、それが print されるってこと!
おぉ!でけた!!分かった!分かったよ!!!!!

サンプル:kuji.php





マジで超疲れた。これは死ぬかも分からんね。
それじゃ、今からお風呂入ってうわなんだおまえやめr


LINEで送る

コメント欄より - 君の瞳にクロスサイトスクリプティング

  • 2007/11/15(木) 23:00:00

日記

ボジョレ・ヌーボー(笑) 飲んだ!
南青山(笑) にある隠れ家(笑) っぽいイタリアンレストラン(笑) で!
シェフの気まぐれサラダ(笑) とかゴルゴンゾーラチーズのペンネ(笑) とか食べた!

以上、スイーツプロトコル。
こうですか?分かりません><

一緒に飲んでた人が帰りにコンビニで体温計買ってた。
「なんか熱っぽいんだよね」ってそれ多分ワインのせい/(^o^)\
コンビニで体温計買う人はじめて見た。
「日記に書くよ!」って言ったら 「領収書いる?」 と食いついてきてすごく嬉しそうだった。
日記のネタにしたからって領収書で落とせないよ!やっぱ熱測った方がいいかも><





クロスサイトスクリプティング脆弱性

コメントくださった方、ありがとうございます!



参考:input.php

POSTの方にクロスサイトスクリプティング脆弱性ができそうな予感がします。
保存していないので良いかもしれませんが、
勉強のために対応しておいたらいいのではないでしょうか?
名前のところに<script>alert("hoge")</script>を入力すると確認できます。



ぎゃあ!すみません、いま参考書見たら COLUMN の欄にその旨記載してありました><

えぇと、紅は参考書を見ながら勉強を進めてるんですが、
一応なにを使ってるか紹介しておきますね。
10日でおぼえようとした出来心は見逃してください。
けんすう先生も持ってるって言ってた! と巻き添えにしとこ。






で、この本にクロスサイトスクリプティングについての記載があったので
以下、一部引用します。


厳密には、本サンプルにはセキュリティ・ホールが潜んでいます。
というのも、ユーザが入力データに<script>のようなタグを指定した場合、
これがそのまま表示(実行)されるため第3者が任意のスクリプトを実行できてしまうのです。
(このような脆弱性を「クロスサイト・スクリプティング」と言います)。
これを防ぐためには、あらかじめリクエスト情報に含まれるタグを取り除く必要があります。
本レッスンでは詳述しませんが、本文のコードならば、以下のように書き換えればOKです。

こんにちは、<?php print(htmlspecialchars
($_POST['name'])); ?>さん!




了解。書き換えてみた。
サンプル:input_2.php


これでいいんだろか。
ちょっと、もう1回ソースを見てみよう。

※タグの最初は全角にしてあります。


<html>
<head><title>フォーム情報を取得する(対応後)</title></head>
<body>
こんにちは、<?php print(htmlspecialchars
($_POST['name'])); ?>さん!
</body>
</html>



んー。
htmlspecialchars ←コレ誰?
なんとなく言いたいことは分かるような気もするけど、
グーグルならもっとよく知ってる気がするのでグーグる。


参考:htmlspecialchars (以下一部引用)

htmlspecialchars - 特殊文字を HTML エンティティに変換する

この関数は、掲示板やゲストブックなどでユーザが書きこんだテキストから
HTML のマークアップ用文字を取り除く場合に有用です。




ちょっと分かってきた。
さらにグーグる。



参考:HTML文字のエスケープ (以下一部引用)

htmlspecialchars()には$_POST['textbox']を引数に指定して、
タグなどの変換をしてもらってから表示してます。
試してみると分かりますが、HTMLタグを入力して送信しても<と>に変換してから
出力するので、HTMLタグはちゃんと表示されるわスクリプトは無害になるわで
めでたしめでたしです。




けっこう分かってきた。
今はこのくらいの理解でもいいかなと思ってる。参考書もそうだけど、とりあえずざっくり行く。
経験上、完璧を求めると挫折するので、最初はツメが甘くてもいいかなーと。
ぬり絵のイメージだ。
線からはみ出さないように丁寧にぬってると全体像のイメージがなかなか湧いてこない。
とりあえずざぁっと色入れて、細かいとこはのちのち塗りつぶす。
PHPはホント、全体像の見当もつかないしなぁ。相手のイメージが湧かないのはしんどい。
なので、モチベーション上げるためにも、”いい意味で” 適当に進めようかなと思っちょるの!
参考書は何度でも読める。
それと、ギークに脆弱性を指摘されたいという気持ちもちょこっとある。あるのか?あるアル。





とゆことで。
気分転換にぬり絵した。

 


紅んち!マジで!クーピーとか超・充実してるカラ!!!
そしてドラゴンボールで復習。
サンプル:input_nurie.php



はっ。拡張子の話をしてない。
.htaccessの話はこの前あきやんにちょこっと聞いた気がする。
正直あまりよく分からなかった。これはもうちょっとツメとこう。


LINEで送る

3日目 今度はあなたに挨拶したい><

  • 2007/11/11(日) 23:00:00

日記

べにぢょ は なかまをよんだ!
あるふぁぎーく があらわれた!

昨日は午後からけんすうとあきやんと3人でお勉強会をした。
といっても、紅とけんすうが自習して、分からないところが出てきたら
あきやんに聞く、って感じなんだけど。


夜は19:30頃から朝5時まで飲んでいた。
後半はトランプしたりお絵かきしたりして遊んだ。
ネクラなボクラはインドア遊びのネタに困らない。
ギークなあきやんの将来の夢はラーメンマンだということが判明。

  

辮髪にしたいなら、早くそう言ってくれればいいのに・・・!
けんすうと2人で、あきやんの気持ちを汲んでやれなかった我が身の不甲斐なさを悔やんだ。
あきやんのコードを見て「すげぇ!天才!俺には絶対無理><」なんて思ってる人は、
この絵を思い出したらちょっぴり幸せになれるかも。
中の人は、辮髪の空手家に憧れたりトランプで腹筋がぶっ壊れるほど笑い転げる
さわやかなお兄さんです。
『辮髪なお兄さんは好きですか』 マダァ-? (・∀・ )っ/凵⌒☆チンチン



けんすうの理想の男性像はホスト。ケータイ小説(笑)の読みすぎだと思う。

  



紅はマリー・アントワネットになって、毎晩ベルサイユ宮殿でプログラミングがしたい。
舞踏会なんて開かずに、宮殿にギークを集めて祖国フランスの脆弱性について語り合いたい。
そすればきっと、フランス革命なんて起こらないのに。
パンがないなら Plagger で頼めばいいじゃない!

  


右下の赤いのはバランスボール。
ギークはバランスボールに乗ってプログラミングするって信じてる。
あきやんに「べにぢょは本当にアタマがおかしいんだね・・・!」と感動?された。
素だ。社交辞令で朝までギークの話はしない。





変数の話をしよう

変数というのは、中身が変わるから変数。
変わらないのは定数というらしい。
とりあえず今日は、定数の話はしない。主役は変数だ。


変数とは
・ $ で始まる
・ $ のあとは好きな名前をつけられる
・ ただし、$ の次は_か英数字(ex. $_lovecall,$lovecallなど)
・ 変数名の大文字と小文字は区別される(ex. $lovecall と $LOVECALL は別)
・ $lovecall="べにぢょ" で、右辺を左辺に代入
・ 一度代入しても、再び代入しなおすと中身が変わる


あまりピンとこない。具体的に考えよう。
中身が変わるとはどういうことかというと、


1 <html>
2 <head><title>変数は中身が変わります</title></head>
3 <body>
4 <?php
5  $Hensuu="こんにちは、ギークなべにぢょさん!";
6 print("$Hensuu");

7 print("<br>");

8  $Hensuu="こんにちは、ネット充なべにぢょさん!";
9 print("$Hensuu");
10 ?>
11 </body>
12 </html>


※タグの最初は全角にしてあります。


サンプル:変数は中身が変わります

5行目で $Hensuu に”こんにちは、ギークなべにぢょさん!”を代入。
6行目の print で表示。 参考:2日目 早く Hello,world!! って言いたい><

7行目でいったん改行。そじゃないと個人的に見づらいので。

8行目で再び $Hensuu が登場。
5行目で ”こんにちは、ギークなべにぢょさん!” を代入したけど、
ここで ”こんにちは、ネット充なべにぢょさん!” に上書きする。
そうすると、
9行目の print で、今度は ”こんにちは、ネット充なべにぢょさん!” と表示される。
繰り返しになるけど、中身が変わるから変数。なるほど、そのままだ。




変数を使って何かしたい

1日目でちょこっと言及した POST を使ってみる。 
参考:1日目 見つけて 私のセキュリティホール

世界にはもう挨拶したので、今度はページを訪れた人に名指しで挨拶する。
ユーザが入力したデータに応じてリアクションを返すには、
コードを2種類用意しなくちゃいけないらしい。



 ■1つ目

1 <html>
2 <head><title>フォーム情報を取得する</title></head>
3 <body>
4 <form method="POST" action="output.php">
5 お名前:
6 <input type="text" name="name" size="20" maxlength="30" />
7 <input type="submit" value="送信" />
8 </form>
9 </body>
10 </html>


サンプル:input.php


 ■2つ目

1 <html>
2 <head><title>フォーム情報を取得する</title></head>
3 <body>
4 こんにちは、<?php print($_POST['name']); ?>さん!
5 </body>
6 </html>


サンプル:output.php



まず、1つ目から。
これは html だ。
フォームタグに関しては下記を参照せよ。
余談だけど、紅が Web1.0 ぽさ満開のサイトを作るとき、とてもお世話になったサイトさんだ。
参考:HTMLタグ/フォームタグ (TAG indexさま)


4行目の
form method="POST" で、データの送信形式を指定している。
この場合は POST で送るよ、と言っている。
次の action="output.php" で、ユーザが入力したデータを output.php に送るよ、
と言っている。
なので、その送り先の output.php も作らなきゃいけない。がびん。
やむをえぬ。自分の命令には責任を持たねば。


2つ目を見よう。短いな。
大事なのは、4行目の <?php print($_POST['name']); ?> だけぽい。
Print のあとの(カッコ)内に変数がある。
$_POST には何も入れた覚えはないが、ひとつめの form method="POST" を使った場合、
入力されたデータを自動的に $_POST に代入するらしい。あたまいいなおまえ!!
$_POST の後ろの ['name'] は、input type タグ内の name で設定した名前を書く。
この場合は name="name" にしたから、name と書けばおk、とゆことね。



実際に、input.php の BOX 内に名前を入力してみる。
送信。キタコレ。POST ばんざいヽ( ^ω^)ノ




追伸

前回のエントリのコメント欄でご指摘いただいた
POST のクロスサイトスクリプティング脆弱性と拡張子の件については、
別エントリを立てて言及します。ありがとうございました!
それと、20世紀少年ではオッチョが好きです >て様


今日はまだまだ書きたいことがある。
GET の話と配列の話がしたい。でも明日月曜だしなぁ。時間的に無理かも...φ(・д・`●)
土曜の自習ではコレ作ったヾ(゚∀゚*)ノ


LINEで送る