2

以下のセッション変数/Cookieを設定するログインシステムを使用しています。Chromeは、あまり問題なくCookieを確認できるため、「ブラウザを閉じると」有効期限が切れるPHPSESSIDとしてラベル付けされているようです。案の定、ログインしてブラウザをシャットダウンし、新しいブラウザセッションを開くと、ログインしなくなります。

ブラウザが閉じているかどうかに関係なく、ユーザーがログインしたままになるようにするにはどうすればよいですか?意図的なログアウトが行われない限り、ユーザーが(可能であれば永続的に)ログインしたままになるようにしたいと思います。

$_SESSION['loginid'] = $row['loginid'];
    
$_SESSION['username'] = $u;    
4

3 に答える 3

8

見てみましょうsession_set_cookie_params()...

最初のパラメータは$lifetime. これを 0 以外の数字に設定すると、ログイン状態が維持される秒数になります。0 の場合、ブラウザを閉じると削除されます。セッションデータを自分で保存するか、ini_set("session.gc_maxlifetime", $Lifetime);同様に設定する必要があることに注意してください(サーバーが古いセッションを削除しないようにするため)。ただし、これにより多くのディスク容量が消費される可能性があることに注意してください (そして、攻撃者が新しいセッションを継続的に生成するだけですべてのディスク容量を消費するサービス妨害攻撃を開きます)...

1年 ~= 3156000 (秒)

正直なところ、セッションを無期限に永続化しようとするのではなく、「remember me」機能を実装することをお勧めします...remember me は Cookie も使用しますが、アクティブでないユーザーのサーバースペースを占有することはありません...

于 2010-07-21T18:01:24.660 に答える
0

セッション Cookie に将来の有効期限を設定するだけです。

于 2010-07-21T17:58:52.520 に答える
0

session_set_cookie_paramsPHPSESSID Cookie 関連の設定を行うために使用できます。

//set cookie for 60 seconds:
session_set_cookie_params(60);

したがって、値 60 を任意の高い秒の値に置き換えるだけです。

于 2010-07-21T18:00:54.323 に答える