Darkside(リンクエラー修正しました)

2018年10月11日(木) 21:23

$_COOKIE で読めない

 perl で書き込んだクッキーが、php で読めないというトラブルが発生した。
 検索してもヒットしないため、ここに情報を公開しておこうと思う。

 簡単な php のプログラムを作って実験したところ、perl で書き込んでいるのが原因ではなかった。
 クッキーの名前に、ピリオドが含まれていたのが原因のようだ。

 setcookie() で書き込んで、すぐに $_COOKIE[] で読み出してみる。
 それでも、名前にピリオドが含まれていると取得できない。
 perl の場合、ピリオド入りの名前でクッキーを書き込んでも、普通に読み出せる。

 クッキーの名前としてセミコロンやカンマは禁止されているが、ピリオドが禁止されているという情報は発見できなかった。
 なぜ php では駄目なのか分からない。止むを得ず、名前を変えることにした。アンダーバーなら、php でも読み書きできる。

written by higashino [ネット・PC] [この記事のURL] [コメントを書く] [コメント(1)] [TB(0)]

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

Comments

『タイトルなし』

有用なTAS情報ありがとうございます。色々勉強させていただきました。

ところで、ご存知かもしれませんがregister globalsという機能がありまして、例えば$_COOKIE['hoge']が$hogeにマッピングされる設定がデフォルトで有効になっている時期がありました。

この時、hoge.hogeがCookieで渡されたとき、$_COOKIE['hoge.hoge']は許容されるのですが$hoge.hogeという変数名が許容されないため、Cookieの.(dot)は_(underscore)に置換されるようになっています。

なので、$_COOKIE['hoge_hoge']でアクセスできると思います。

get、postなどで渡されるパラメータも同様に処理されています。

http://php.net/manual/ja/language.variables.external.php

written by register globals

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4