5

IPB フォーラムの仕組みを理解しようとしています。

覚えている場合は、ブラウザを閉じて再度開いてもログインしたままになります。

サーバーによって設定された唯一の Cookie は、セッションの終了時、つまりブラウザーを閉じたときに期限切れになるため、これがどのように可能になるかを試しています。では、Cookie を使用せずにサーバーがセッションを再開するにはどうすればよいのでしょうか。

編集: セッション ID Cookie はセッションの終了時に期限切れになるように設定されており、セッションの終了時に Cookie を削除するようにブラウザを設定しています。

これは、ブラウザーを閉じる (セッションが終了する) ときに、Cookie を削除する必要があることを意味します。

ブラウザを閉じている間に別のブラウザで同じサイトを開いた場合、セッションは再開されますか? ただし、これは起こりません。

代わりに、元のブラウザーを開くと、セッションが再開されます。

他の Cookie セットは pass_hash と呼ばれる Cookie のみで、作成されるとすぐに有効期限が切れ、ページが読み込まれるたびにサーバーから送信されます。そのため、認証には使用されません。

4

6 に答える 6

3

Cookie の卑劣な代替手段は、画像またはその他のオブジェクトの最終更新日時のタイムスタンプです。サーバーは、タイムスタンプをセッションを識別する値に設定する画像を提供できます。別のページをロードすると、ブラウザは if-modified-sinceタイムスタンプを送信し、あなたを解放します。

于 2009-08-03T03:26:58.660 に答える
2

ブラウザのlocalStorageオブジェクトを使用します。例:

localStorage.setItem("lastname", "Smith");
var name = localStorage.getItem("lastname");
于 2012-04-25T14:47:08.053 に答える
1

通常、Cookie はブラウザを閉じた後も保持されます。PHP を使用している場合は 、 set_cookie のオプションを確認してください。セッションを使用している場合は、セッション領域を確認してください。

// Set Cookie
setcookie($name, $value, $expire) 
// $expire is the time in seconds since Unix Epoch (see [time()][3]) it will stay alive
// Session
session_set_cookie_params($lifetime) 
// $lifetime is the seconds it will stay alive in seconds
于 2009-08-03T01:52:53.327 に答える
1

ブラウザー ウィンドウを閉じたときに、セッション情報が破棄されるとは限りません。たとえば、PHP では、セッション情報をデータベースに保存することを選択でき、ブラウザーを閉じて元のセッションが終了した後もその情報を保持できます。

私が考えることができる別の方法は、Users テーブルに、ユーザーがまだログインしていることを示すフラグを設定することです。おそらく、テーブルには、logged_in というフィールドがあり、それを true に設定できます。一定の時間が経過すると (つまり、戻ってこない場合)、false にリセットされます。

于 2009-08-03T01:57:49.700 に答える
1

Cookie 以外のセッション情報を非表示にする場所がいくつかあります。

URL のセッション キー ( http://example.com/app/234348738790/main )

GET 変数としてのセッション キー ( ?sess=257892345 )

POST 変数としてのセッション キー (input type='hidden')

ブラウザのローカルストレージに保存します

上記のいずれかで JavaScript を使用して、セッション情報をサーバーに送り返します。

于 2009-08-03T03:10:11.423 に答える
0

Cookie を見逃した (または有効期限が切れたときに読み間違えた/誤解した) ように思えますが、別の可能性として、リモート アドレスを DB に保存しておき、2 回目のアクセスのために新しいセッションを自動的に作成している可能性があります。ただし、これはセキュリティ面でもNATなどの理由でも、かなり貧弱なソリューションになるため、IPBがそうしているとは思えません。

于 2009-08-03T01:52:48.960 に答える