ホームページ  >  記事  >  バックエンド開発  >  PHP:ヘッダー情報を変更できません

PHP:ヘッダー情報を変更できません

WBOY
WBOYオリジナル
2016-06-23 13:49:22985ブラウズ

ob_start();
setcookie("username","test",time()+3600);
echo "ユーザー名は:".$HTTP_COOKIE_VARS["username"]."n";
echo "ユーザー名は:".$_COOKIE["username"]."n";
print_r($_COOKIE);
?>
PHP ファイルにアクセスすると、警告: ヘッダー情報は変更できません - ヘッダーは既に存在しますエラーの原因は、php プログラムの先頭に header("content-type: text/html; charset=utf-8"); が追加されたため、ページに上記のエラーが表示されたことです。オンラインで情報を確認したところ、php.ini の設定に問題があることがわかり、php.ini ファイルの Output_buffering がデフォルトでオフになっていることがわかり、それをオンまたは任意の数値に変更しましたが、結果は失敗しました。結果がありません。

setcookie 関数は、データがブラウザに出力される前に送信する必要があります

上記の制限に基づいて、setcookie() 関数を実行すると、「インデックスが未定義です」、「ヘッダー情報を変更できません - ヘッダーはすでに送信されています」というメッセージが頻繁に発生します。 「... などの問題」の解決策は、「ヘッダー情報を変更できません - ヘッダーはすでに送信されています」???? により、Cookie を生成する前にブラウザへのデータ出力を遅らせることです。そのため、On を追加できます。 ob_start() 関数?

ob_start() 関数は、バッファーを開くために使用されます。たとえば、header() 関数の前にキャリッジリターン、スペース、ラインフィードを含む出力がある場合、「ヘッダーはすべての送信準備ができました」というエラーが発生します。この場合、最初に ob_start() を使用できます。オープン バッファ PHP コードのデータ ブロックと echo() 出力はバッファに入り、すぐには出力されません:

この問題は次の方法で解決されます:

//header()の前

ob_start(); / /バッファを開く echo "Hellon"; //出力
header("location:index.php") //ブラウザをindex.phpにリダイレクトします

ob_end_flush(); //すべてのコンテンツをブラウザデバイスに出力します ?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:ハーブについて次の記事:ハーブについて