9

私は小さな (読み取り: 50 ユーザー未満) 非営利団体のサイトに取り組んでおり、PHP の知識はかなり限られています。現在、オンラインのチュートリアルで見つけたログイン スクリプトがあります。私が直面している問題は、各ユーザーが約 1 時間後にログアウトされることです。

セキュリティは実際にはコンテンツの問題ではありません。理想的には、誰かが数日または数週間ログインしたままになることを望みます. ただし、セッションの長さについて Google で検索すると、ログアウト タイマーを短縮しようとしている人が見つかります。

コードに関する限り、ログインページがユーザー名とパスワードをデータベースと比較すると、次のようになります。

session_register("myusername");
session_register("mypassword");
header("location:index.php")

そして、保護された各ページでは、次で始まります。

session_start();
if(!session_is_registered(myusername)){
header("location:login.html:);
}
4

3 に答える 3

8

あなたの質問とユーザーベースの規模を考えると、セッション変数をカスタマイズしようとするのではなく、グローバル設定の変更を選択します。シンプルで、必要なことを行い、すべてのユーザーに適用するのにほとんど労力を必要としません。

ファイルを使用して、グローバルセッションの有効期間を設定できます(他の回答で概説されているように).htaccess

php_value session.gc_maxlifetime 86400 //this is one day in seconds

または、php.ini ファイルで設定することもできます。そのスニペットは次のとおりです。

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 86400

純粋な参考として、長期的なガベージ コレクションのために考慮する必要がある値は次のとおりです。

86400 = one day
604800 = one week

ガベージ コレクション (gc) の詳細については、こちらを参照してください。

于 2013-04-26T02:38:43.090 に答える