ホームページ  >  記事  >  バックエンド開発  >  PHP が Cookie を保存できない関連の問題が解決されました

PHP が Cookie を保存できない関連の問題が解決されました

WBOY
WBOYオリジナル
2016-06-13 13:06:431109ブラウズ

PHP が Cookie を保存できない問題が解決されました

今日、php プログラムで作業していましたが、突然問題が発生しました。つまり、Cookie がエラーなしで保存できないという問題が発生しました。検索したところ、次のような問題が見つかりました。

プログラムは Cookie を書き込むときに ?@setcookie ( "url", "http://www.my400800.cn") を使用するためです。 ", time()+3600*24, "/");

PHP の @ 記号と # 記号の意味

関数 foo($n)
{
??? $結果 = 1/$n;
??? $result を返します;
}
echo @foo(0); // 関数内で0による除算エラーが発生しますが、@を付けるとエラーは表示されません。
echo "end"; // 出力終了

# コメント記号

// と同様に、# は単一行のコメント文字です (複数行のコメント文字は /* */)。

@setcookieを使用しているため、Cookie書き込み時にエラーが発生しても出力されず、問題を検出することができません。最後に、@setcookie を setcookie に変更すると、プログラムは次のエラー メッセージを出力します:

警告: ヘッダー情報は変更できません - ヘッダーはすでに送信されています (出力は

で開始されました)

インターネットで検索したところ、cookie を設定する前に何も出力されないことがわかり、コードを確認したところ、setcookie を設定する前に何も出力されていないことがわかりました。具体的な内容は次のとおりです。以下のように:

?

今日、WordPress の中国語フォーラムにアクセスしました。フォーラムはあまり人気がありませんが、まだ多くのマスターがいます。プラグインやテンプレートを書ける専門家と、ファイル編集もできない初心者が混在するフォーラムです(笑)。

このエラーのように、いくつかの投稿で言及されている同じエラーを確認しました。「警告: ヘッダー情報を変更できません - ヘッダーはすでに送信されています (出力は c:program で開始されました) fileseasyphp1-8wwwp-config.php:1) c:program fileseasyphp1-8wwwp-login.php 行 9"

これは非常に典型的な質問です。 WordPress プログラムが実行されると、最初に wp-config.php などの設定ファイルが呼び出され、さらに wp-db.php を呼び出してデータベース接続を確立します。 後で使用するために。これらのファイルはいくつかの設定を行うだけであり、HTML コードは出力されません。設定が完了すると、プログラム自体が実行を開始します。プログラムによっては、header コマンドを使用して HTTP ヘッダーを設定します。なぜなら HTML コードが出力される前に HTTP ヘッダーを設定する必要があります。そうしないと、HTML コードはすでにクライアントへの送信が開始されており、HTTP ヘッダーはすでに送信されているため、戻ってリセットする方法はありません。 この問題は WordPress CodeX で説明されています:「送信済みのヘッダーを解決するにはどうすればよいですか?」 警告 問題?"。この記事では、各ファイル、特に頻繁に編集される wp-config.php ファイルが で終わることを確認してください。 その後に他の文字を置くことはできません。上記の例に特有のことですが、プロンプト メッセージでは、wp-config.php の最初の行が HTML 出力を開始することが示されており、これが を使用して wp-config.php ファイルを編集し、BOM の 3 文字の出力である UTF-8 でエンコードされたドキュメントとして保存した可能性が非常に高いです。ヘッダー コマンド の実行でエラーが発生しました 。

?

解決策

WordPress 中国のフォーラムには全文検索機能がなく、タイトルのみなので、Google で「ヘッダー情報を変更できない」を検索しました。 site:wordpress.org.cn を見ると、多くの人がこの問題に遭遇しているようです。現在皆さんが使用している WordPress は、主にオリジナルの英語版 WordPress といくつかの WordPress です。 WordPressの中国語版。私の中国語パッケージには wp-config-sample.php ファイルが含まれていないため、WordPress の元のバージョンでは ASCII が使用されています。 コードには当然 BOM が含まれていないため、このようなエラーは発生しません。xigang が作成した WordPress の中国語版が WordPress 中国語フォーラムで入手できるので、それをダウンロードしました。 Diandianyou の WordPress 2.0.4 と 2.0.3 を確認しましたが、問題はありませんでした。 2.0.4 中国語版では、wp-config-sample.php ファイルは GB2312 エンコードと DOS 行末を使用していますが、誰かがメモ帳を使用して変更した場合は問題ありません。 このファイルを使用すると、DOS の行末によって編集上の問題が発生することはなく、GB2312 エンコーディングによって BOM の問題が発生することもありません。

残念ながら、WordPress を使用してブログをホストしたい場合は、メモ帳を捨てて、UltraEdit または EditPlus をインストールしたほうがよいでしょう。

?

?

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