超初級CGIクラックガイド(1)
この世で一番分かりやすいクラックはCGIクラックだと思います。単純な理由です。この世に存在するほぼ全てのクラックは「裏技」です。例えばFC版ドラクエ4でコイン買う時に極端に多い枚数を指定すると値段が安くなるって裏技があったの覚えてますか?あの原理は単純ですよね。
「(プログラムの)原理が分かる」ということは「裏技の原理が分かる」ということです。そして「クラックは裏技だ」というのは「デバッグ(?)されてたら通用しないよ」という意味でもあります。
しかし普通のWinユーザーはUNIXの動作原理は勿論Winの動作原理・IEの動作原理等々を知っている訳ではありません。ただ高級言語(我々人間に理解しやすい言語)で記述されたCGIなら動作原理が見えやすいと思うんです。サイト運営しててCGI組める人なら尚更。
この世で一番分かりやすいクラックはCGIクラックだと思います。そういう意味です。
まずCGI組めない人向けの解説から始めます。組める方はごめんなさい。
CGIとは一言で言えば「状況に応じカスタマイズされたhtmlファイルを閲覧者に引き渡すための手段」です。普通、例えばindex.htmlをメモ帳とかホームページビルダーとかで作ってアップすればそのページにアクセスした人は皆同じindex.htmlを見ますよね。CGIを使えば
- 書き込み状況によって掲示板のログ表示が刻一刻と変化する
- アクセスによってカウンターのアクセス数が刻一刻と変化する
といった芸当が可能な訳です。そしてCGIとは出力htmlカスタマイズ手段である訳ですからその作業は
- 内部処理(=色々な処理を経てカスタマイズ)
- 出力(=カスタマイズしたモノを出力)
という二段階に分けられる。
JavaScript知らなければかえって悩むこともないと思うんですが中途半端にかじってる人(ソースコピペで自サイトに設置したりしてる人)のために書いておくと、「CGIとJavaScriptって何が違うんだ」という問いに対するこの連載における答えは
- CGIの内部処理は閲覧者から見えない出力しか見えない(JavaScriptの処理はhtmlに記述されますよね)
- CGIは閲覧者がアクセスできないサーバー上のファイルにもアクセスできる
の二つということで。この二つって実は同じことです。「CGIはサーバーサイド、JavaScriptはクライアントサイド」という一言で説明できますが、まぁ分からなければ別にいいです。
さて。CGIの処理とはつまりプログラムです。凄く簡単なCGIソースを書きます。
これはperlで書いたCGIですよという宣言(約束事)
@time = localtime(time);
$sec=$time[0];
$min=$time[1];
$hour=$time[2];
内部処理
print "Content-type:text/html\n\n";
ここから出力ですよという宣言(約束事)
print "<html><head></head><body>現在時刻は$hour:$min:$sec</body></html>";
出力
一応書いておくと、ここで「約束事」と定義した二行はかなり乱暴な説明を行っています。「とりあえずCGIの基本原理をちゃちゃっと分かって貰うために手っ取り早い説明」であってそれ以上ではないので本気で勉強しようと思う人は他のサイトを見て下さい。
まぁ「localtimeって何?」とかに一切答えてないですけど「何をしてるか」ってことは大体分かりますよね?このCGIを10時23分41秒に実行すれば
というhtmlソースを受け取ることになる訳です。
さて。今のCGIには「プログラム」としての重要な要素が欠けています。「出力htmlをカスタマイズ」といってもそれは「アクセスした時刻によって」でしかない。「閲覧者の意志によるモノ」が一切含まれない。
CGIに「閲覧者の意志」を伝えるための方法はformです。

TrackBack
この記事へのトラックバック