0

クライアントのWebサイトの1つで、2人のユーザーのセッションが交換されているように見える問題に直面しています。私はCodeIgniterを使用しており、次の構成になっています。

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

昨日、ユーザーの1人がすべてのページでセッションを再生成するという問題に直面していました。追加の予防措置として、セッションテーブルのUser-Agentデータベースフィールドのサイズを増やし、上記のmatch_ipをTRUEに切り替えました。

今日、2人のユーザーがログインしているようで、それぞれが相手の名前としてヘッダーに「WelcomeX」メッセージを表示しています。残念ながら、この情報はクライアントからしか取得できないため、セッションが(ローカルおよびオンラインで)正常に機能しているように見えるため、問題をデバッグしたり、マシンに複製したりすることはできません。

誰かが私がさらにデバッグする方法、私の状況を知っている方法、または問題が何であるかについての提案や洞察を持っていますか?追加してみました:

$this->session->sess_destroy();
$this->session->sess_create();

ユーザーロギングについてですが、それが問題になる可能性があるかどうかはわかりません。

もちろん、実際のログインコードに問題がないことも再確認しました...ただし、POSTから電子メールとパスワードを取得し、データベースで一致するレコードを見つけるだけです。これは通常の手順です。

4

1 に答える 1

0

これは奇妙な問題です。より長い暗号化キーを設定し、Cookieを暗号化して、再度問題が発生するかどうかを確認してください。

これらは私が多くのWebサイトで使用している設定であり、この問題は発生していません(暗号化キー、Cookieの暗号化、終了時に期限切れ)。

$config['encryption_key'] = 'dkfhlgsugT&(657865876t0967(*)&^)(*&*(&$^&%#%^#_)(+JKBVKHJFDC^*%VR^C@%C^';

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

また、ユーザーのログアウトページとログインページ(あなたが述べたように)でセッションを破棄するようにしてください:

$this->session->sess_destroy();
于 2013-01-16T13:09:45.097 に答える