最近、Web サイトの php バックエンドを作成していたときに、setcookie 関数が var_dump() を通じて Cookie を常に正常に設定できないことがわかりました。関数の値が false であり、明らかに適切に設定されていませんでした。Google は、setcookie の失敗の原因が次の理由である可能性があることを発見しました:
- ブラウザが Cookie を無効にしています。確認する必要はありません。無効になっていないと思います。
-
php の setcookie() を使用して Cookie を作成することは、php でセッションを開くための session_start() と同じです。 setcookie() の前に HTTP ヘッダーを出力することはできません。コードを確認したところ、次のコード
<code class="php">var_dump(<span class="variable">$qOpenId</span>);setcookie(<span class="string">'qOpenId'</span>,<span class="variable">$openid</span>,time() + <span class="number">30</span> * <span class="number">24</span> * <span class="number">3600</span>,<span class="string">'/'</span>);</code>
が var_dump($OpenId) 行を明確にコメント化しており、テストは成功しました。
個人的には、setcookie は http ヘッダーの内容を直接設定する必要があると思います。そのため、前にヘッダー出力、var_dump、echo などを置くことはできません。