我试图进行不活动注销,因此我有一个PHP文件,其中定义了logout()
。
然后我有一个片段用于检查会话打开的时间并保持在同一页面中。
但是当我执行include_once "logout.php"
或include "logout.php"
我的logout()
函数被称为程序性并且不想要这种行为。如何创建功能,将其包含在其他文件中并且不执行?
logout.php:
<?php
include_once "con.php";
/*$executeLog = false;
if(isset($_GET['logout'])){
$executeLog=true;
}
if($executeLog){
logout();
}
*/
function logout(){
session_start();
global $con;
//0-> entrada
//1-> salida
$q = mysqli_query($con,"INSERT INTO logs (usuario,fecha_hora,entrada_o_salida) VALUES (".$_SESSION['user_id'].",CURRENT_TIMESTAMP(),1)");
//echo ($q) ? 'yes' : 'error :'.var_dump($q);
//exit();
// Elimina la variable email en sesión.
unset($_SESSION['email']);
unset($_SESSION['user_id']);
unset($_SESSION['nombre_apellidos']);
// Elimina la sesion.
session_destroy();
$executeLog = false;
// Redirecciona a la página de login.
header("HTTP/1.1 302 Moved Temporarily");
header("Location: index.php");
}
?>
片段:
<?php
session_start();
include_once "con.php";
include "logout.php";
$_SESSION['loginTime'] = time();
if($_SESSION['loginTime'] < time()+MAX_SESSION_TIME*60){ logout(); }
(...)
?>
编辑:该死的,条件错了。遗憾。
答案 0 :(得分:4)
if正在检查他们登录的时间是否小于time()+MAX_SESSION_TIME*60
,这将永远为真。
只需检查相反的情况即可解决问题:
<?php
session_start();
include_once "con.php";
include "logout.php";
$_SESSION['loginTime'] = time();
if($_SESSION['loginTime'] > (time()+MAX_SESSION_TIME*60)){ logout(); }
(...)
?>