Cookieの検証 (保存出来る最大サイズを調べたり、圧縮した文字列をセットしてみたり)

今現在、圧縮→解凍のところでバグがでています(Warning: gzuncompress(): need dictionary)。その為、cookieにsetされている値が表示されません。

以下を検証

  • cookieにセットする値の長さが4096byte以上(値 >= 4096)だとcookieにセットされない(無視される)
    • もともとセットされていたcookieは上書きされない
  • cookieにセットする値の長さが4096byte以上(値 >= 4096)でも圧縮した結果、4096byteより小さければ(値 < 4096)、cookieにセットされている
  • なお、cookieのサイズ制限にはcookie名の長さも含まれる(セットする値の長さ + cookie名の長さが対象になる)

※ 1クッキーの最大サイズ(byte)で一番小さい値が4096byteだったので4096byteを基準にしています (こちらを参考)
※ cookieにセットする値の長さは、URLエンコード後の長さ(byte数)です

e.g. 文字列の圧縮/解凍

  • PHPには以下の圧縮方法があるみたいですが、gzcompressを用いています(何故これを選んだか意味は無いです)
          
// 圧縮した文字列をクッキーにセット
setcookie('hoge', gzcompress($value, 9), 0);

// 圧縮された文字列の解凍
$unCompressed = gzuncompress($_COOKIE['hoge']);
        

検証用