![]() |
| カレッヂ |
質問者 姫紗
投稿日 9/15(月) 14:27:09
ネットサーフレスキューの簡易BBSのスクリプトを
読んでいてわからないことがありましたので
質問させてください
クッキーのデコードの際に
▼スクリプト一部抜粋
1 $cookies = $ENV{'HTTP_COOKIE'};
2 @pairs = split(/;/,$cookies);
3 foreach $pair (@pairs) {
4 ($name,$value) = split(/=/,$pair);
5 $name =~ s/ //g;
6 $DUMMY{$name} = $value;
7 }
8
9 @prirs = split(/,/,$DUMMY{$reload});
10 foreach $pair (@pairs) {
11 ($name, $value) = split(/:/,$pair);
12 $COOKIE($name) = $value;
13 }
と記述してあるのですが9行目からわからないのです
クッキーは
set-cookie: name=値; expires=有効期限; path=URL domain=サイトドメイン;secure
のようになってるのでひとつひとつを「;」で区切る
nameとvalueを「=」で分ける
一つ一つはnameの前に空白があるので「 」でわける
此処まではあってますよね??
ですが9行目から「,」で区切っていますけど一体どうしてですか
「,」はどこに入っているものなのでしょうか
初歩的(多分)なことですみませんが
教えていただければうれしいです
プロバイダ参照: |
回答者 しあわせのツボ
[削除]
投稿日 9/15(月) 16:08:52
MiniBBSにはcookieに記憶させたい情報が複数あります。 その数だけcookieを発行すれば簡単なのですが、ブラウザの実装により cookieの数には上限があるため、できれば1つで済ませたいのです。 そこで複数の情報を1つのcookieに押し込むために、MiniBBSでは value=name:名前,mail:foo@example.com, …; のような形式を用いています。 それを再び分解してそれぞれの値として取り出すためのコードです。 |
質問者 姫紗
[削除]
投稿日 9/16(火) 17:14:06
あぁっ!そういうことなんですね!
ということは、
http://なんたらかんたら.com/a.cgi?name=value
というようにURLで名前やメッセージを
受け取るのではなくて、cookieで読む仕組みなのですね!
9 @prirs = split(/,/,$DUMMY{$reload});
10 foreach $pair (@pairs) {
11 ($name, $value) = split(/:/,$pair);
12 $COOKIE($name) = $value;
13 }
そのために、9行目$DUMMY{$reload}をかくことで
cookieの情報を読む事ができる。
ということは$DUMMY{$reload}は($reloadは設置URL)は
定型句みたいなものなんですよね
なんとなく理解できました!!
しあわせのツボ様ありがとうございます
また、わからないことがあるかと思いますが
その際は宜しくお願いします。 |
このページは終了したので返信(回答)は書きこめません
| Web裏技 |