「ヘッダーは既に送信されました」というエラーを発生させずに、ドキュメントの途中で Cookie を設定するにはどうすればよいですか? 私がやろうとしているのは、ログアウト スクリプトを作成することです (ログイン Cookie の設定が機能します...とても奇妙です。if ステートメントで囲まれているためですか?) しかし、ページ タイトルやその他の内容は既にエコーしていますこのログアウトを行う前に、ページの上部にあります。
ありがとう!
最も簡単な方法は、出力バッファリングを使用して、準備が整うまで PHP がクライアントにデータを送信しないようにすることです。
<?php
ob_start();
// your code
ob_end_flush();
?>
出力バッファリングは、バッファがフラッシュされるまで出力されたすべてのデータを保存し、一度に送信しますstart
。end_flush
アプリケーションを 2 つの部分に分解してみてください。
まず、Cookie の設定を解除してから、結果ページでユーザーをリダイレクトします。一般的な働き方です。
また、開発でフレームワークを使用するようにしてください。これにより、スキルとコードの保守性が向上します。
Cookie はヘッダーで送信され、他のすべてが送信される前に送信されます。したがって、実際にクライアント (ブラウザ) に何かを「エコー」した場合、ヘッダーも送信されています。
とはいえ、すべてのコードが実行されたら、出力をバッファリングしてすべて送信できます (ob_start()
およびob_end_flush()
) 。