4

Chrome と Firefox で奇妙な問題に直面しています。IE で問題なく動作するためです。[編集1:IEでも時々問題が発生します]

前提:

  • ホームページView.php で、jQuery を使用して Cookie、たとえば Cookie1 を作成します。
  • 私のホームページにはアプリケーションへのリンクがあり、それを App1 と呼びましょう。
  • Cookie1 は App1 のコントローラーでアクセスされ、見つからない場合はホームページにリダイレクトされます。

問題文

  • キャッシュの消去
  • ホームページへ(Cookie1が作成されます)
  • App1 へのリンクをクリックします。
  • App1 はホームページにリダイレクトされます (App1 は Cookie1 にアクセスできませんでした)
  • App1 のリンクをもう一度クリックすると、App1 は正常に動作します。

スニペット

ホームページView.php

   createCookie('loggedin_ind', true);

   function createCookie(name,value,days) {
        if (days) {
           var date = new Date();
           date.setTime(date.getTime()+(days*24*60*60*1000));
           var expires = "; expires="+date.toGMTString();
        }
        else{
           var expires = "";
        }
        document.cookie = name+"="+value+expires+"; path=/";

    }

App1Contoller.php

function index()
{
    if(isset($_COOKIE["loggedin_ind"]))
    {
        //Display App1
    }
    else
    {
        redirect('http://localhost/Sitename');
    }
}

最初の機会にのみ、Cookieが(jQueryによって)ライターではない、または(phpによって)読み取られない理由を誰でも提案できますか? 2回目からはうまくいきます。

私のローカルホストでも問題なく動作します。コードがサーバーに移行されたときにのみ問題が発生します。

Edit2: Cookieロジックをsessionsに置き換えましたが、問題は解決しません。

Edit3:これはサーバー関連の問題であると強く感じています。ホストゲーター共有ホスティングで同じコードをホストしましたが、そこでは正常に動作します。問題は私のgodaddy VDSでのみ発生します。Cookie/セッションが両方のサーバーで異なる方法で処理されているかどうかを確認する方法を誰でも提案できますか? ありがとう。

どんな助けでも大歓迎です.Thanks.

4

3 に答える 3

4

コードを確認しましたが、コードに問題はありません。サーバー側に問題があります

以下はいくつかのステップです。確認して、既存の構成と比較してください。

ステップ1 :-

出力バッファリングを使用して、この関数を呼び出す前に出力を送信します。ブラウザへのすべての出力のオーバーヘッドは、送信するまでサーバーでバッファリングされます。これを行うには、スクリプトでob_start()およびob_end_flush()を呼び出すか、php.ini またはサーバー構成ファイルで output_buffering 構成ディレクティブを設定します。

ステップ2:-

PHP ディレクティブregister_globals が on に設定されている場合、Cookie の値も変数になります。

あなたのケースで最も重要

Cookie の値を FALSE に設定すると、Cookie の削除が試行されます。ブール値は使用しないでください。代わりに、FALSE には 0 を、TRUE には 1 を使用してください。

これがあなたを助けることを願っています:)

于 2012-06-15T07:40:22.573 に答える
0

私のプロジェクトの1つで同様の問題があります。私は自分のホームページから php スクリプトに投稿していましたが、php ページの結果に応じて、自分のホームページにリダイレクトされました。ホームページにリダイレクトすると、セッションが失われます。

ところで、アプリ 1 の表示はどうですか?

エラーは、php スクリプトを相対 URL ではなく絶対 URL で参照していたことにあることがわかりました。これにより、php スクリプトが新しいセッションを開始し、以前のセッションが効果的に上書きされます。

投稿の URL を http://www.mysite.com/folder/script.phpから /folder/script.phpに変更すると、セッションが上書きされなくなりました。

于 2012-06-19T16:09:59.777 に答える
0

App1 への最初と 2 番目のリクエストで送信されたプレーンな HTTP ヘッダーを表示すると、非常に役立つと思います...

Cookie が両方のヘッダーで持続する場合は、サーバー関連の問題です。それ以外の場合は、ブラウザーを詳しく調べます。

リクエストは次のようになります。

GET /app1 HTTP/1.1
Host: default.localhost
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: loggedin_ind=1

プレーンな HTTP ヘッダーを表示するために Firefox で推奨される拡張機能のリストを次に示します。どの Firefox 拡張機能で HTTP 応答をダンプできますか? 私はほとんどの場合、個人的に Firebug を使用しています。

于 2012-06-18T13:45:52.437 に答える