自分のための
CGIメモ《超基礎編》
このページは、完全に私のメモであります。
何度でも同じ失敗を繰り返す自分のために
メモを残したかっただけです。
だから、多分あんまり使えません。



【変数】

●変数名に「-」は使ったらダメ。

●スコープ
 ・グローバルスコープ…全ての場所で利用可能
 ・レキシカルスコープ(my)…宣言されたブロック内やサブルーチンのみで利用可能
 ・ダイナミックスコープ(local)…呼び出されたサブルーチン側でも利用可能

●変数展開
 ・''では展開されない。
 ・""では展開される。  


【ヒアドキュメント】

●終端文字列のクォートによって、変数展開されたりしなかったりする。

▼変数展開する
print <<"EOF";

EOF

もしくは

print <<EOF;

EOF

▼変数展開しない
print <<'EOF';

EOF


【ファイルの属性】
   HTML文書・ライブラリ・・・644
   CGIスクリプト・・・755
   一般に見られるデータの入ったディレクトリ・・・755
   カウンタ・BBSのデータなど・・・666

   ●『ダイレクトにディレクトリを指定した場合だけ読めるようにして、
    ディレクトリ一覧は見られないようにしたい→→→属性を711(実行のみ許可)にする』
    ・・・でもロボットには見つけられてしまうのか?
       それ以前に、そのディレクトリにindex.htmlを作っておけば
       いいだけの話だったりしないか?
       よくわからん。これを読んでる詳しい方、誰か教えてくだされ。


【UNIXコマンド】
ls  ファイル一覧。ファイル名だけ。
ls -l  ファイル一覧。属性・タイムスタンプも表示。

chmod [属性] [名前]  ファイル属性変更。

umask [マスク番号]  777から指定されたマスク番号を引いた値がデフォルトのファイル属性になる。
一般的には022。


【HTTP要求ヘッダ】
   デフォルトはGET


【アンカータグからCGIを呼ぶ】
   <a href = "cgi-local/aaa.cgi?100">リンクする</a>
      ↓
      ↓ 呼び先
      ↓
   $bbb = $ENV{'QUERY_STRING'}・・・変数bbbの値は100が代入される!


【部分文字列の削除(substr)】
   $mojiretsu = "abcdefg";
   substr($mojiretsu,2,3) = '';
      ↓
   $mojiretsu は「abfg」になる。   

   ・・・$mojiretsuの3つめ(先頭が0個目とする)から3バイトを分を
       空文字で置き換え(=削除)




■SSI■

【flastmod】
   ファイルの最終更新日時を表示。
   <!--#flastmod file="abc.html" -->

   file:カレントディレクトリか、そこより下にあるディレクトリ内のファイルを指定する場合。
   virtual:カレントディレクトリよりも上にあるファイルを指定する場合。
        サーバルートから始まるパス名を付けてファイル名を書く。




■RIMNETでCGI/SSIを使う際の注意■
(1999年12月のサーババージョンアップ後)

なんか色々やっかいな設定変更や、今までの常識を覆す動作が起こります。
理屈は後回しにして、とにかく復元させる方法をメモメモ。

【SSIが組み込まれたhtml(アクセスカウンタなど)が動作しない!!】

●SSI用スクリプトのパーミッションは750のように指定。770や777など、groupやothers属性に実行権限があると動作しない
●HTMLが置かれているディレクトリ以下のコマンドしか呼べない(絶対パスで指定してもダメ)。
引数をつけても無視される(サイテーだぁぁ!!なんでだぁぁ!!)
→→→execの記述を別のコマンドファイルに格納し、実行させるようにする。
コマンドファイルはexecのSSI 文が書いてあるHTMLファイルが置かれているディレクトリ以下に配置。




「お〜い、間違ってんぞ〜」ってお声を
お待ちしています。