Conversation
Notices
-
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Tuesday, 16-Jul-2019 23:39:17 JST
せのお (妹尾 賢)
PHPでセッション管理を勉強していた。セッションの破棄時にsetcookie(session_name(), "", time()-42000, "/");みたいな関数を呼ぶ。ここの第3引数が意味不明だった。なぜ,-42000なのかと。
マニュアルを見る限り,過去の時刻にしないとだめとあるけど本当?time()だけでもいいのではないの?
PHP: setcookie - Manual https://www.php.net/manual/ja/function.setcookie.php-
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Tuesday, 16-Jul-2019 23:42:41 JST
せのお (妹尾 賢)
そもそも,クッキーというのがよくわかっていない。お菓子じゃなくて?
ブラウザに保存されるデータらしいという非常に曖昧なことしかしらない。何か,RFCとかで決まっているのかしら。ここに,有効期限が-だとどうなるかとか書いてあるのかもしれないな。 -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Tuesday, 16-Jul-2019 23:57:12 JST
せのお (妹尾 賢)
正式にはHTTPクッキーか。今後は略さず,常にHTTPクッキーと書くことにする。
RFC 6265で定義されているとか。明日読んでみるか
HTTP cookie - Wikipedia https://ja.wikipedia.org/wiki/HTTP_cookie -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Wednesday, 17-Jul-2019 23:39:32 JST
せのお (妹尾 賢)
読んだ。やはり,クッキーの削除は,expiresに過去の日付の指定が必要だ。現在日時にした場合,一瞬クッキーが保存される。
RFC 6265 — HTTP State Management Mechanism (日本語訳) https://triple-underscore.github.io/http-cookie-ja.html -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Wednesday, 17-Jul-2019 23:44:52 JST
せのお (妹尾 賢)
過去の日付でいいならば,expires=0でいいのではないかと思うのだけど,ここからはPHPの話になる。
PHPのsetcookieの第3引数は,UNIXタイムスタンプを採用している。
https://www.php.net/manual/ja/function.setcookie.php -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Wednesday, 17-Jul-2019 23:51:48 JST
せのお (妹尾 賢)
そして,0は未指定を意味する。だとしたら,削除するならば,1でいいんじゃないかな。過去の日付なら何でもいいなら。
サンプルだと,time()-?みたいなまどろっこしい書き方をしている。
1だとまずいのか。万が一,time()が1の場合があるから。そしたら,time()-1か?この場合,time()が下限値の場合,オーバーフローの問題あるけど。 -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Wednesday, 17-Jul-2019 23:59:41 JST
せのお (妹尾 賢)
PHPでは整数がオーバーフローすると,floatになる。
じゃあ,型変換でそのオーバーフローしたfloatをintにする場合はどうなる?その場合,未定義。ガードが入りそう。
https://www.php.net/manual/ja/language.types.integer.php#language.types.integer.casting.from-float
https://www.php.net/manual/ja/language.types.integer.php -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Thursday, 18-Jul-2019 00:07:13 JST
せのお (妹尾 賢)
だとしたらどうする?time関数も結果はintだから,マイナスの下限値があり得る。現在時刻にマイナスの下限値が来た場合,削除不可能じゃないか?
まあ,現実的にはないのだけど。どのみち,ガード不可能なら,1でもいい気がするな。せのお (妹尾 賢) likes this.
-