我正在构建一个网站,其中我希望会话超时为2分钟不活动,如果达到超时,则必须阻止网站中的操作,直到用户再次登录。我为会话编写了这段代码并且超时了:
session_start();
$log_user = $reg_logout = "";
$log_user_link = $log_user_link2 = $reg_logout_link = $reg_logout_link2 = "";
if(isset($_SESSION['name'])!="") {
$log_user=$_SESSION['name'];
$reg_logout="Logout";
$log_user_link="php/personal.php"; //se sono nella home
$log_user_link2="personal.php"; //se sono in altre pagine
$reg_logout_link="php/logout.php"; //se sono nella home
$reg_logout_link2="logout.php"; //se sono in altre pagine
} else {
$log_user="Login";
$reg_logout="Registrati";
$log_user_link="php/login.php"; //se sono nella home
$log_user_link2="login.php"; //se sono in altre pagine
$reg_logout_link="php/registration.php"; //se sono nella home
$reg_logout_link2="registration.php"; //se sono in altre pagine
}
//Expire the session if user is inactive for 2 minutes or more.
$expireAfter = 2;
//Check to see if our "last action" session variable has been set.
if(isset($_SESSION['last_action'])){
//Figure out how many seconds have passed since the user was last active.
$secondsInactive = time() - $_SESSION['last_action'];
//Convert our minutes into seconds.
$expireAfterSeconds = $expireAfter * 60;
//Check to see if they have been inactive for too long.
if($secondsInactive >= $expireAfterSeconds){
//User has been inactive for too long. Kill their session.
session_unset();
session_destroy();
}
}
//Assign the current timestamp as the user's latest activity
$_SESSION['last_action'] = time();
我已将此代码包含在我网站的所有页面中并且部分工作,因为如果我尝试更改页面2分钟后,则会强制注销用户;但是,如果我在一个页面,其中有一个表格与数据库交互(我必须有表格的页面,一个用于预订,一个用于删除它)我按下提交2分钟后,我的网站与数据库和之后强制注销。两分钟后如何阻止与数据库的交互?