3

こんにちは、プログラミングは初めてですが、現在セッションタイムアウトの問題に取り組んでいます。基本的に、session.gc_maxlifetime を変更してもセッションがタイムアウトし続けます。同じディレクトリを使用して、maxlifetime が設定されていないセッション データを保存する別のスクリプトが実行されているため、代わりに短い値を使用すると思います。これに対処するために、htaccess ファイルを変更しましたが、1 時間 30 分経ってもまだ終了しているため、もっと長く持続させる必要があります。私のhtaccessファイルは以下です。この掲示板の関連する投稿の多くを見て試してみましたが、これまでのところ何も機能していません。どんなアイデアでも大歓迎です。

SetEnv PHPRC /home/rocket/public_html/php.ini

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<IfModule mod_php5.c>
php_value session.save_path "new/username/php_sessions"
php_value session.gc_maxlifetime "86400"
php_value session.cookie_lifetime "86400"

</IfModule>


# END WordPress
4

1 に答える 1

3

PHP は、セッション cookie に対して、あなたが思っているようなことをしません...

php_value session.gc_maxlifetime "86400"

これは単にガベージ コレクションが発生する時間を設定するだけです。セッション データがこの時間後にガベージ コレクションされる可能性は非常に低いため、これが原因である可能性は低いです。

php_value session.cookie_lifetime "86400"

これにより、セッション cookie の有効期限が切れる時刻が設定されます、更新されないsession_start()ため、1 つのページでセッションを開始すると、時計の刻みが設定されます。ページからページに移動しても「クロック」はリセットされないため、acookie_lifetimeが 600のセッションは、 10 分間非アクティブになってからではなく、開始してから 10 分後に期限切れになります。この動作が見られる場合があります。

最善の策は、ユーザーがブラウザーを閉じたときにのみphp_value session.cookie_lifetime "0"セッション Cookie が期限切れになるように設定することです。

非アクティブな期間の後にトリガーされる任意の有効期限を処理する場合は、セッション内で変数を設定することにより、PHP コードでそれを行うのが最善です。たとえば、$_SESSION['expires']すべてのページの開始時にそれをチェック/更新/処理します。

于 2012-05-22T15:28:25.697 に答える