ホームページ  >  記事  >  バックエンド開発  >  ヘッダー情報を変更できません - ヘッダーは error_PHP チュートリアルによってすでに送信されています

ヘッダー情報を変更できません - ヘッダーは error_PHP チュートリアルによってすでに送信されています

WBOY
WBOYオリジナル
2016-07-15 13:21:31964ブラウズ

要約すると、最終的な解決策は、php.ini ファイルを変更し、デフォルトの Output_buffering を off に変更し、それを 4096 に変更することです。

ob_start();
setcookie("ユーザー名","ソン・ヤンビン",time()+3600);
echo "ユーザー名は:".$HTTP_COOKIE_VARS["ユーザー名"]."n";
echo "ユーザー名は:".$_COOKIE["ユーザー名"]."n";
print_r($_COOKIE);
?>
警告: ヘッダー情報は変更できません - ヘッダーは既に送信されています。エラーの理由
phpプログラムの先頭に追加しました
header("キャッシュ制御:キャッシュなし、再検証が必要");
その後、ページ上に上記のエラーが表示され、N情報を読み込んでも結果が出ませんでした。今日、php.ini の設定に問題があることに偶然気づきました。php.ini ファイルは C:windows
にありました。 Output_buffering のデフォルトはオフです。今度は 4096 に設定しましたが、問題ありません。
表示プロンプトエラーと、(日付 + エクスポートされたファイルの数) をファイル名として使用できないというエラー メッセージを解決するために使用されます。
setcookie 関数は、データがブラウザに出力される前に送信する必要があります
上記の制限により、setcookie() 関数を実行すると、「インデックスが定義されていない」、「ヘッダー情報を変更できません - ヘッダーはすでに送信されています」などの問題が発生することがよくあります。「ヘッダー情報を変更できません - 」エラーを解決します。この方法は、Cookie を生成する前にブラウザへのデータの出力を遅らせることです。そのため、プログラムの先頭に ob_start(); 関数を追加できます。
ob_start() 関数はバッファを開くために使用されます。たとえば、header() 関数の前にキャリッジ リターン、スペース、ライン フィードを含む出力がある場合、「ヘッダーはすべての送信準備ができました」というエラーが発生します。この場合、最初に ob_start() を使用してバッファを開くことができます。PHP コードのデータ ブロックと echo() の出力はバッファに入りますが、バッファを開くことには多くの機能があります。想像力を働かせてください。それは次の 4 つの点に要約できます。

1. header() の前に使用されます

ob_start(); //バッファをオープンします

echo "こんにちは" //出力
header("location:index.php"); //ブラウザをindex.phpにリダイレクトします
ob_end_flush();//すべてのコンテンツをブラウザに出力します
?>

2. phpinfo() 関数はクライアントとサーバーの情報を取得できますが、クライアント情報を保存するにはバッファーメソッドが最適です。 ob_start(); //バッファをオープンします

phpinfo(); //phpinfo関数を使用します
$info=ob_get_contents(); //バッファの内容を取得し、$info
に代入します。 $file=fopen('info.txt','w'); // ファイル info.txt を開きます
fwrite($file,$info); //info.txt に情報を書き込みます
fclose($file); // ファイル info.txt を閉じます
?>

3. 静的ページテクノロジー

ob_start();//バッファをオープンします

?>
PHPページのすべての出力
$content = ob_get_contents();//PHP ページによって出力されたすべてのコンテンツを取得します
$fp = fopen("output00001.html", "w") // ファイルを作成し、書き込み用に開きます
; fwrite($fp, $content); //PHP ページのすべてのコンテンツを Output00001.html に書き込み、その後...
fclose($fp);
?>

4.コードを出力する

関数 run_code($code) {

If($code) {
ob_start();
eval($code);
$contents = ob_get_contents();
ob_end_clean();
}その他{
echo "エラー! 出力がありません";
exit();
}
$content を返します;
}


http://www.bkjia.com/PHPjc/477179.html

tru​​ehttp://www.bkjia.com/PHPjc/477179.html技術記事要約すると、最終的な解決策は、php.ini ファイルを変更し、デフォルトの Output_buffering をオフから 4096 に変更します。 ?php ob_start(); setcookie(username,Song Yanbin,time()+3600); エコー...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。