- ベストアンサー
セッションとヘッダーの順序について
session_name("WebID"); session_start(); を header("Content-Type: text/html; charset=UTF-8"); のあとに呼び出すとエラーになります。 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\php\index.php:56) in C:\xampp\htdocs\php\verify.php on line 3 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\php\index.php:56) in C:\xampp\htdocs\php\verify.php on line 3 やはりセッションを先に呼び出さないといけないのでしょうか? session_unsetというものを使えばこの順序でもうまくいきますか? index.phpからエラーが起きたファイルを表示させているので、 順序は変えにくいのですが、順序を変えなくてもクリアできる 方法があったら教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
セッションは設定にもよりますが、クッキーを利用します。 クッキーをブラウザに食べてもらうにはContent-Typeの前でなくてはならない約束があります。 セッションは「同一ユーザである事をユーザに教えてもらう手間」をセッションIDを利用することによって省くものです。クッキーを利用せずにセッションIDをやり取りすると出来ますが、そのためにはGETパラメタでセッションIDを管理するなど、手間がかかります。 よって、 > 順序を変えなくてもクリアできる > 方法があったら教えてください。 は難しいという事になります。 もしどうしても、という事であれば、インナーフレームを使うとか、AJAXを使うなどが回答になるかもしれません。もちろん手間がかかります。
その他の回答 (1)
- hrm_mmm
- ベストアンサー率63% (292/459)
出力のバッファリングを使用すればできるかと。 ob_start() を全てのコード(header,cookie,その他ページデータ)より前に記述し、ページの最後に ob_end_flush() をスクリプトでコールすれば、最後のコール時に、header用設定をまず出力してから、ページデータの出力が行われます。