プログラミング雑記

【PHP】setcookieの直後に$_COOKIE[]としても参照できない話

楠 剛毅(goke)

個人開発から世界を変えるようなプロダクトづくりを目指しています

はじめに

タイトルのままですが、
例えば下記のコードは直感的には「hello」と出力されそうです。

<?php

setcookie("my_cookie","hello",time() + 86400, "/");
echo $_COOKIE["my_cookie"];

?>

でも、これだと何も出力されず、一度リロードすると「hello」と出力されます。これに気づかないとハマるかもしれません。

なぜこのような挙動なのか

こちらによると

$_COOKIE変数は、setcookie直後には保存されていません。

まず、setcookieで、COOKIEヘッダがついた状態でクライアントに送信されて、ブラウザにクッキーとして保存されます。

次のリクエスト時(次のページを呼び出したとき)にサーバにCOOKIEが送信され、そのページがPHPスクリプトであれば、$_COOKIEがセットされます。

https://q.hatena.ne.jp/1090246222

とのことです。
サーバーサイドとクライアントサイドの仕組みを頭に入れておかないとやっちゃいがちなので注意が必要です。

最後に

PHPを含めたプログラミング言語の年収と習得の難しさをランキングにしてみました。
合わせてご確認ください。

あわせて読みたい
  • この記事を書いた人

楠 剛毅(goke)

個人開発から世界を変えるようなプロダクトづくりを目指しています

-プログラミング雑記