2017-07-24 3 views
0

Ich versuche eine Inaktivitätsabmeldung durchzuführen, also habe ich eine PHP-Datei, in der definiert ist. Dann habe ich ein Schnipsel für die Überprüfung der Zeit, die die Sitzung geöffnet ist und auf der gleichen Seite blieb. Aber wenn ich include_once "logout.php" oder include "logout.php" mache, wird meine logout() Funktion prozedural aufgerufen und will dieses Verhalten nicht. Wie kann ich eine Funktion erstellen, in eine andere Datei einfügen und nicht ausführen?PHP - Warum Funktionen ausgeführt werden, wenn Include-Datei aufgerufen wird?

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"); 
    } 

?> 

Schnipsel:

<?php 
session_start(); 
include_once "con.php"; 
include "logout.php"; 

$_SESSION['loginTime'] = time(); 

if($_SESSION['loginTime'] < time()+MAX_SESSION_TIME*60){ logout(); } 

(...) 
?> 

EDIT: Verdammt, war falsch, den Zustand zu tun. Es tut uns leid.

+2

Ihre Funktion ausgeführt, da 'if' Anweisung' true'. –

+2

Das 'if' im aufrufenden Skript ist immer wahr. – Barmar

+0

@u_mulder verdammt, machte die Bedingung umgekehrt. Vielen Dank. – UnsignedFoo

Antwort

4

Das if prüft, ob die Zeit, in der sie sich angemeldet haben, kleiner als time()+MAX_SESSION_TIME*60 ist, was immer wahr sein wird.

einfach überprüft das Gegenteil wird Ihr Problem beheben:

<?php 
session_start(); 
include_once "con.php"; 
include "logout.php"; 

$_SESSION['loginTime'] = time(); 

if($_SESSION['loginTime'] > (time()+MAX_SESSION_TIME*60)){ logout(); } 

(...) 
?> 
Verwandte Themen