昨日Cookieを使用すると、ページでエラーが報告されました: php Cannot edit header information-headers added by エラーの解決策をまとめておきます。
コード
コードは次のとおりです | コードをコピー |
ob_start(); setcookie("ユーザー名","ソン・ヤンビン",time()+3600); echo "ユーザー名は:".$HTTP_COOKIE_VARS["ユーザー名"]."n"; echo "ユーザー名は:".$_COOKIE["ユーザー名"]."n"; print_r($_COOKIE); ?> |
警告: ヘッダー情報は変更できません - ヘッダーは既に送信されています。エラーの理由
phpプログラムの先頭に追加しました
header("キャッシュ制御:キャッシュなし、再検証が必要");
原因分析
PHP での Cookie の使用にはいくつかの制限があります。
1. setcookie は タグの前にある必要があります。
2. setcookieを使用する前は、echoを使用してコンテンツを入力することはできません
3. Web ページが読み込まれるまで Cookie は表示されません
4. データを送信する前に、ブラウザにデータを出力する前に setcookie を配置する必要があります
……
上記の制限により、setcookie() 関数を使用すると、「インデックスが定義されていない」、「ヘッダー情報を変更できません - ヘッダーはすでに送信されています」などの問題が発生する可能性があります。解決策は、出力する前に Cookie を生成することです。内容
解決策
1 ページ上部の php タグに ob_start();を追加します。
2 返された情報の下に ob_end_flush();を追加します
このようにして、誤った情報の現実をブロックすることができます
しかし、一部の友人は、上記の方法は機能しなかったと言いました。その後、php.ini を開いて、output_buffering を on に設定しました。 Appache を再起動します。OK。これが解決策のようです。
さらに、これはエンコーディングの問題であり、変換されたドキュメントが UFT-8 を備えている限り解決できると言う友人もいますが、ここでは紹介しません。