2

私たちの顧客は現在問題を抱えています。私たちのシステムは、ログイン後、サーバーとのすべての通信にAJAXリクエストを使用します。$ _ SESSIONが使用されている場合は常に、session_start(); スクリプトの上にあります-エラー時に例外をスローするカスタムエラーハンドラーのため、try...catchに含まれています。したがって、擬似コードは次のようになります。

//set_error_handler_here
try{
session_start();
//do_something_with $_SESSION
(...)
} catch($e){
//handle error
}

さて、問題:私たちの顧客はランダムにセッションを失ったようです。つまり、fe $_SESSION['id']は「不明なインデックス」エラーをスローします。これは、InternetExplorerとChromeの両方に当てはまります。このシステムをさまざまなシステムで数か月間テストしており、以前にこのエラーが発生したことがないことを確認できます。

スホシンは使用していません。セッションが期限切れになる前の時間内にアクティビティもあります。誰かが解決策が何であるかについて何か考えを持っていますか?

編集:私は最終的に$_COOKIE['PHPSESSID']が設定されているかどうかを確認するためのテストを実施しました。isset($ _ COOKIE ['PHPSESSID'])はfalseを返しました。これは、両方のブラウザで発生することを考えると、クライアントが何らかの形のマルウェアに悩まされている可能性があることを意味します。助けてくれたすべての人に感謝したいと思います。特定のオプションは私たちが考えもしなかったものでした。

4

2 に答える 2

1

ケース
1httpユーザーエージェントを検証していますか?

その場合、IEは互換モードと通常モードで実行されるときに異なるユーザーエージェントを使用するため、これが問題になる可能性があります。

ケース2

クラスタリングアプリケーションサーバーはありますか?したがって、セッションファイルが1つのサーバーに保存され、次のリクエストが別のサーバーに送信される場合がありますか?

ケース3

アプリケーションレベルのバグである可能性があり、条件やユーザーなどに基づいてセッションが設定されていない

ケース
4iframeを使用している場合、iframeにCookieを設定しているため、ブラウザの設定で明示的に設定されていない限り、ブラウザがそれをサードパーティのCookieと見なし、拒否する可能性もあります。

その場合、Cookieを設定しようとしているページにP3Pヘッダーが必要になります。

ダミーのCookieを設定して、戻ってくるかどうかを確認することをお勧めします。また、セッションCookieをhttpcookieとして設定して、javascriptからアクセスできないようにします(スクリプトの形式が正しくないCookieがあると想定します)。

于 2012-05-23T14:35:16.970 に答える
1

これはまれなケースかもしれませんが、誰かが同じエラーをした場合、私がしたことは彼が恩恵を受けるかもしれません。

私は同じ問題を抱えていました、phpセッションが失われました。私はjqueryajaxではなく単純なxmlhttpajaxを使用していますが、これは問題ではないと思います。バックグラウンドで同じ手順が実行されます。

ajaxリクエストでのIPアドレスの使用を停止した後、この問題を修正したので、これから:http://1.2.3.4/index.php?somekey=somevalue私はこれに行きました:http://www.example.com/index.php?somekey=somevalue

于 2014-08-01T10:41:47.370 に答える