- ベストアンサー
セッションの破棄エラーについて
- セッションの破棄方法について質問です。
- セッション変数を解除し、クッキーを削除してセッションを破棄しましたが、エラーが発生しています。
- エラーメッセージによると、ヘッダ情報が既に送信されているようです。どのように解決すればいいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>このような記事を見つけたのですが使えますか? やっぱり、HTMLとPHPを混在させるのではなく、 最初にクッキーに関連する(正確にはヘッダーに書かれる系の命令だけ)を最初に全部やった後に、結果をHTMLに 混ぜるのみで、やったほうがいいかもしれません。 今、HTMLを送ってからPHPからセッションクッキーを操作してるので、それが原因だとは思っているのですが。 が! 最初の1行目で、エラってる理由が、わからないのですよね。 これは、まだHTMLを送ってないように見えるので、 それで、違うかな~と思ってたところでした。 ただ、それ系の問題だとは思うので、 一度、HTMLを送らずに、PHP部分だけを 先にやってみてはどうでしょう? 切り分けることで、問題点が見つけやすくなるかもしれません。 今、暇なので試してもよかったんですが、 やる気が起きなくて(ごめんね)
その他の回答 (3)
- t_ohta
- ベストアンサー率38% (5238/13705)
たぶん、setcookie() をする前にHTMLを書いているからでしょう。 cookie情報はHTMLヘッダーに記載されるのでHTMLの出力が始まる前に処理しなければいけません。 HTMLの中にPHPの処理を割り込ませるのではなく、まず最初に処理を全て終わらせてからHTMLの出力をするようにし、HTML内では処理結果を表示したり、処理結果を基に判定を入れて表示を切り替えるだけにした方が間違いを減らせますし、可読性が良くメンテナンスしやすくなりますよ。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
いや、なんか違うな。。 先頭に書いてる文で、session cache limiter ってのが、引っ掛かる。 ちょっと私が過去にあった件とは違う関連かもしれないので。 別の方の意見を待ちましょ。
補足
サーバーのエラーってことですか? https://netlog.jpn.org/r271-635/2009/04/php_cannot_send_session_cache.html このような記事を見つけたのですが使えますか?
- AsarKingChang
- ベストアンサー率46% (3467/7474)
こちらでも試せるのですが、面倒で試してないのですが。 一番最初の"<?php" 内に全部を移動するとどうなりますか? HTTPリクエストって最初にヘッダーが送られ その後、続く空改行の後ボディーが続くので、 ボディーを送信後にヘッダーに関連する命令を書いたことが エラーの原因に見えた為です (このソースを検証はしていないので確信はないが、 過去に同じような問題を私も経験したので) 結局はクッキーなので、ヘッダー内のクッキーが 後から書き換えれない(送り出してしまった後は。。) のエラーだと思います。 たしか、対処法もあったのですが、忘れました^^ ヘッダーとボディーを全部バッファーにためてから、 別に送りだす方式で確か、私の時は解決した気がします。
お礼
いつも質問に答えていただきありがとうございます。