php_PHP チュートリアルでヘッダー情報を変更できない場合の解決策
- WBOYオリジナル
- 2016-07-14 10:07:141028ブラウズ
ある日、プログラムを書いていたとき、ユーザーがログイン後に実行するページに直接ジャンプできるように、エラーのアドレスを Cookie に書き込んだのですが、サーバーでテストしたところ、エラーが発生しました。ローカルでは発生しないというプロンプトが表示されました: 警告: ヘッダー情報を変更できません - ヘッダーは既に送信されています... このステートメントは明らかに setcookie によって引き起こされています。 インターネットを確認すると、次の説明があります: Cookie 自体にはその使用にいくつかの制限があります。のような:
1. setcookie を呼び出す記述は の前に配置する必要があります。
2. setcookie を呼び出す前に Echo を使用することはできません。
3. Web ページがリロードされるまで、Cookie はプログラムに表示されません。
4. setcookie 関数は、データがブラウザに出力される前に送信する必要があります。
解決策 1:
上記の制限により、setcookie()関数を実行すると「インデックスが未定義」「ヘッダー情報を変更できない - ヘッダーが既に送信されている」などの問題が発生することがよくあります。ヘッダー情報 - すでに送信されたヘッダー」 間違った方法は、Cookie を生成する前にブラウザへのデータの出力を遅らせることです。そのため、プログラムの先頭に ob_start(); 関数を追加できます。これで解決します。 ob_start() を追加したい場合、プログラムを作成した後にこれを変更するのは少し気が滅入ります。このエラーが表示されたことを知ったとき、なぜ私のローカル コンピュータではこのエラーが表示されなかったのか疑問に思いました。 PHP.ini の設定が違うのかと思いましたが、間違っていると思いますが、ほぼ同じです。
そこで、その後に続く「output starting at....」という文を見てみました。これは、setcookie の前に別の場所に出力があったことを意味するため、output starting at に続くファイルを見つけ、最初の行が空白であることがわかりました。そして、
解決しました!
解決策 2:
オンラインで見つかったこの問題の解決策はほとんど同じですが、今日再びそのような問題に遭遇しました。試してみたところ、うまくいくことがわかりました:
Windows の C ドライブにある php.ini 設定ファイルを見つけて、output_buffering という 1 つの項目を検索し、その値を off から on に変更して、Apache を再起動します。
www.zhangchaoxie.comより転載
http://www.bkjia.com/PHPjc/477884.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477884.html技術記事ある日、プログラムを書いていたとき、ユーザーがログイン後に実行するページに直接ジャンプできるように、エラーのアドレスをCookieに書き込んだのですが、サーバー上でテストしてみると、問題が発生しました。 ..
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。