javascript-phpの「setcookie」はクロスブラウザでは機能しませんか?
現在、setcookieを使用してCookieを設定していますが、FirefoxとSafariでのみ機能し、IEとChrome(および他のブラウザ)ではCookieが設定されていません。
setcookie($name, $value, time()+3600 * 25);
setcookieとIEに関する記事を読みましたが、有効期限が過去(または小さすぎる)の場合、IEは単にそれを無視します。
JavascriptでCookieを設定できることは知っていますが(私はMooToolsを使用しています)、phpを使用したいのですが、MooToolsとCookieが機能しません。
助けていただければ幸いです。
答え :
解決策:
サーバーの時計を確認してください。 25時間以上遅れて実行されている場合、ブラウザに関する限り、 time() + 3600 * 25
は過去のものである可能性があります。
答え :
解決策:
PHPは間違いなくブラウザ間でCookieを設定できます。結局のところ、これは単なるヘッダーであり、PHPサイトのIEおよびChromeでセッションが失敗することはありませんか?>
IEが有効期限を過ぎたCookieを尊重しない理由を理解できます。
これらのブラウザのヘッダーを調べましたか?
答え :
解決策:
setcookie
はブラウザに依存せず、CookieはHTTPプロトコルヘッダーを使用して設定されます。 間違いなくクロスブラウザ
setcookieが失敗する理由は次のとおりです。
- setcookieが実行される前にテキストの一部を送信します。
error_reporting(E_ALL);
を使用してエラーメッセージをオンにし、出力が開始された行を確認します。 Cookieは、HTMLの最初の行または最初のecho
が実行される前に送信する必要があります。 - PHPファイルをBOMを使用したUTF-8エンコーディングで保存します。 BOMをオフにすることができます。ファイルをテキストエディタで開き、encodindを変更して、再保存します。最初にバックアップを作成します
- 経過した時間で
setcookie
を使用します。 setcookieの3番目のパラメータは有効期限です。time()
未満の場合、Cookieは保存されません setcookie
に間違ったパラメータを指定しています。cookie_name
パラメータで、英数字の文字のみが含まれていることを確認してください。cookie_path
とcookie_domain
はまったく指定しないでください。
このソリューションでは、ob_startも使用しています。この関数は、すべてのヘッダーが正常に送信されることを保証します。使用方法の詳細については、マニュアルをお読みください。
答え :
解決策:
これはあなたを助けるかもしれません。すべてのIEに適用される可能性があります。自分でテストしたことはありません。
http://php.net/manual/en/function.setcookie.php#100094
ページの一部は次のとおりです:
Internet Explorer 6の印刷時にCookieが存在しない理由について頭を悩ませている人にとって、説明は非常に興味深いものです。少し調査した結果、有効期限が0以外のCookieは、印刷時にIE6からサーバーに渡されませんでした。有効期限が0のCookieが送信されます。
したがって:
setcookie( "TestCookie"、$ value、time()+ 3600); //IE6の印刷/印刷プレビューからは送信されません
setcookie( "TestCookie"、$ value、0); //IE6の印刷/印刷プレビューから送信されます
IE6で印刷するときに通常の有効期限が切れるCookieを送信しないことは誰が賢明な考えであるかを誰もが理解できるようにします...
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。