私が使用しているブログは php で構築されているのですが、 cookie を使って設定を保存する処理をしているところで、
$_COOKIE[FOO]=''; if($_POST['set_cookie']) { $_COOKIE[FOO].='value'; } if($_COOKIE[FOO]){ hoge; }
というコードが書かれています。
このコードの意図がよく分からないのですが、コード通りに解釈すると、
1)フォームの「設定保存」ボタンが押されると、 set_cookie が post される。
2)set_cookie が post されてきたら、$_COOKIE に保存されている cookie 名 FOO に値 'value' を追加する。
3)その上で、もし cookie 名 FOO に何らかの値がセットされていたら、 hoge を実行する。
という流れになっています。
疑問なのは、 $_COOKIE は cookie に設定された値を取り出すことのできるスーパーグローバル変数ですが、 cookie に値をセットするために上のように代入してよいのか?ということです。
私の予想では、代入しても $_COOKIE に値はセットされず、 cookie に値はセットされず、 setcookie() を使う必要があると思うのですが、実際に試したところ、値自体はこのスーパーグローバル変数にセットできるようです。でも、そうしたところで、 cookie を更新してくれるようには思えませんし、勝手に代入して値を変更してよいものかどうか疑問です。
ネットで php のリファレンスサイトなどを検索してみましたが、 $_COOKIE に値を代入する例や、代入した場合結果どのようなことが起こるかを説明したサイトが皆無でしたので、質問させてください。
current latest version である PHP7 での言語仕様として、上記操作を行った時の「正しい動作」は、どうなるのだと定義されているのでしょうか。
回答2件
あなたの回答
tips
プレビュー