1

私は半分完成した私の答えの解決策を探しています。私は自分のウェブサイトからユーザーをログアウトさせる必要があり、次のようなあなたの解決策を使用しました:-

if( $_SESSION['last_activity'] < time()-$_SESSION['expire_time'] ) {

 //have we expired?
    //redirect to logout.php
    header('Location: '.BASE_FULL_PATH.'/user/logout'); //change yoursite.com to the name of you site!!
} else{ //if we haven't expired:
    $_SESSION['last_activity'] = time(); //this was the moment of last activity.
}
$_SESSION['logged_in'] = true; 
$_SESSION['last_activity'] = time(); 
$_SESSION['expire_time'] = 24*60*60;

それは完全に機能していますが、セッションの有効期限が切れようとしているときに警告ボックスが必要です.多くのことを試してみてください.

4

2 に答える 2

0

私は知っています、これは効率的な方法ではありませんが、これを試すことができます. 5秒または10秒の時間間隔ごとにサーバーでphpファイルを実行するajaxを試してください。

その ajax を実行している php ファイルには、セッションの last_activity と expire_time を比較するコードが含まれています。

<?php
$warning=100;
if( $_SESSION['last_activity']+warning < time()-$_SESSION['expire_time'] ) {
?>
<script type="text/javascript">
alert("Your session will expire soon!");
</script>
<?php
}
?>

変数 $warning を設定して、アラート メッセージの時間を調整できます。

于 2013-08-14T08:38:36.443 に答える
0

セッションの有効期限はページをリロードするたびにリセットされるため、JavaScript のsetTimeout()関数の時間引数として有効期限を使用できます。

var sessionExpiryTime = 24 * 60 * 60;
var sessionExpiryAlertTime  = sessionExpiryTime - 5; //assuming we want the alert to show 5 seconds before expiry
setTimeout(function({ 
    alert("Session about to expire!");
}, sessionExpiryAlertTime * 1000); //time is in milliseconds so we multiply by 1000

これは、ユーザーが JavaScript を有効にしている限り問題なく機能します。ユーザーがページをリロードすると、php コードに従って有効期限タイマーが更新され、setTimeout()関数が再起動します。

于 2020-09-11T21:22:51.500 に答える