はじめに
タイトルのままですが、
例えば下記のコードは直感的には「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を含めたプログラミング言語の年収と習得の難しさをランキングにしてみました。
合わせてご確認ください。