カレッヂ |
質問者 姫紗
投稿日 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裏技 |