CGI-BBS > CGI > Perl > クッキー情報をデコードしたい。


カレッヂ
カレッヂ


質問者 姫紗  投稿日 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行目から「,」で区切っていますけど一体どうしてですか
「,」はどこに入っているものなのでしょうか
初歩的(多分)なことですみませんが
教えていただければうれしいです

プロバイダ参照:
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:
FTPソフト:TeraPad
サーバ移転:していない
改造:していない
CGI習熟度:(未選択)

回答者 しあわせのツボ  [削除]  投稿日 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裏技