ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発における無効な Cookie に対する一般的な解決策

PHP 開発における無効な Cookie に対する一般的な解決策

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

PHP 開発における無効な Cookie に対する一般的な解決策
PHP 開発における無効な Cookie に対する一般的な解決策

Cookie はクライアント側に存在し、サーバーとは何の関係もありません。Linux では設定と同様に大文字と小文字が区別されます。 PHP チュートリアルの register_globals = Off の設定が両側で同じかどうかなど。

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

function foo($n)
{
$result = 1/$n;
return $result;
}
echo @foo(0); // 関数内では0による除算エラーが発生しますが、@を付けるとエラーは表示されなくなります。
echo "end"; // 出力 end
# コメント記号

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

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

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

で開始されました) オンラインで確認したところ、実際に進行中であること setcookie が設定される前に出力がないはずです。その後、コードを確認したところ、setcookie の前に何も出力されていないことがわかりました。詳細は次のとおりです。 🎜>今日、WordPress の中国語フォーラムを覗いてみました。フォーラムはあまり人気がありませんが、プラグインやテンプレートを作成できる専門家と、ファイルを編集することさえできない初心者が混在しています。フォーラムはどのようなものですか

。次のような同じエラーがいくつかの投稿で述べられています。「警告: ヘッダー情報は変更できません - ヘッダーはすでに送信されています (出力は c:program fileseasyphp1-8wwwwp- で開始されました)」 config.php:1) in c:program fileseasyphp1-8wwwwp-login.php の行 9"

これは非常に典型的な問題です。WordPress プログラムが実行されると、最初に wp などの設定ファイルが呼び出されます。 -config.php は、後で使用するためのデータベース チュートリアル接続を確立します。これらのファイルは、一部の設定を行うだけであり、設定が完了すると、プログラム自体が実行を開始します。プログラムは header コマンドを使用して HTTP ヘッダーを設定します。ヘッダーは HTML コードが出力される前に設定する必要があります。そうしないと、HTML コードはすでにクライアントに送信されており、HTTP はすでに送信されているため、取得したりリセットしたりすることはできません。 WordPress CodeX では、この問題について次のように説明しています。「ヘッダーが送信済みであるという警告の問題を解決するにはどうすればよいですか?」 この記事では、各ファイル (特に頻繁に編集される wp-config.php ファイル) が
解決策

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


Cookie の使用法
Cookie の削除手順 begin-----

bool setcookie ( string name [, string value [, intexpire [, string path [, string domain [, bool secure ]]]]] )

Cookie を削除するには、ブラウザの削除メカニズムをトリガーするために、その有効期限が過去であることを確認する必要があります。

次の例は、設定したばかりの Cookie を削除する方法を示しています。
//有効期限を 1 時間前に設定します www.3ppt.com
setcookie("TestCookie ", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
?>


-----Cookie の削除手順終了-----

Cookie を削除するには、Cookie の有効期間を次のように設定します。これは、ほとんどすべての PHP プログラマーが行うことです。

その後、PHP を初めて使用した友人が、プログラム内で Cookie の値を空に設定したいと言いましたが、Cookie は直接削除されました。当時の私の最初の反応は、信じられないということでした。そこで、
をテストしました。
setcookie("testcookie", '');
print_r($_COOKIE);


結果 案の定、$_COOKIE['testcookie'] だけでなく、$_COOKIE 配列全体が空になりました。そこで、winsock を使用してパケットをキャプチャし、返された http ヘッダーを観察したところ、http ヘッダーが「Set-Cookie: testcookie=deleted;expires=Mon, 18-Jun-2007 02:42:33 GMT」であることがわかりました。これは、「setcookie("testcookie ", '');」を意味し、実際に cookie testcookie を直接削除しますが、この状況については PHP マニュアルにはまったく説明がありません。

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