2016-08-30 5 views
1

Wie kann ich eine bestimmte Zeit festlegen, um eine Sitzung zu zerstören? Kann mir jemand nach 10 Minuten den richtigen Weg zeigen, die Sitzung zu zerstören? Hier ist mein Code:Sitzung Timeout in PHP mit bestimmter Zeit

Sitzungsberechtigungs:

session_start(); 
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) { 
    header("location: index.php"); 
    exit(); 
} 

Session logout:

session_start(); 
unset($_SESSION['SESS_MEMBER_ID']); 
unset($_SESSION['SESS_FIRST_NAME']); 
unset($_SESSION['SESS_LAST_NAME']); 
header("location: index.php"); 

Session Login:

if($result) { 
    if(mysql_num_rows($result) == 1) { 
     //Login Successful 
     session_regenerate_id(); 
     $member = mysql_fetch_assoc($result); 
     $_SESSION['SESS_MEMBER_ID'] = $member['id']; 
     $_SESSION['SESS_USER_ID'] = $member['username']; 
     $_SESSION['SESS_FIRST_NAME'] = $member['first_name']; 
     $_SESSION['SESS_LAST_NAME'] = $member['last_name']; 
     $_SESSION['SESS_USER_TYPE'] = $member['acc_type']; 
     session_write_close(); 
     header("location: user_profile.php"); 
     exit(); 
    } else { 
     header("location: loginerr.php"); 
     exit(); 
    } 
} else { 
    die("Query failed"); 
} 
+0

Auf Front-End setTimeout, um AJAX-Funktion nach 10 min aufrufen, ruft Backend-Skript von AJAX aufgerufen session_destroy() –

+0

10 Minuten Inaktivität oder nur 10 Minuten? Sie können sie nicht automatisch abmelden_, aber Sie können sich dann abmelden, wenn sie nach 10 Minuten versuchen, auf sie zuzugreifen. – AbraCadaver

+0

10 Minuten Inaktivität. – Varma

Antwort

1

Sie können nicht, es sei denn, Sie rollen Sie Ihre eigenen s ESS-System. Das Standard-Bereinigungssystem für Sitzungen wird nach dem Zufallsprinzip ausgeführt. Jeder Aufruf eines PHP-Skripts, das session_start() aufruft, hat eine Chance, den Garbage Collector auszulösen.

Wenn der GC hochfährt, durchläuft er im Grunde das Sitzungsspeicherverzeichnis und sucht nach Dateien, auf die seit mehr als dem standardmäßigen Ablaufzeitraum nicht zugegriffen wurde, und löscht alle, die "veraltet" sind.

Per Definition wird eine Sitzung verwendet (z. B. session_start() wird aufgerufen und diese bestimmte Sitzungsdatei wird geladen), dann kann sie nicht veraltet sein und wird nicht gelöscht.

Sie benötigen ein externes System, um den Löschvorgang zu planen, z. Verwenden Sie den at Scheduler.

+0

Ich würde auf eine Klarstellung warten. Sie können sie nach 10 Minuten oder 10 Minuten Inaktivität bei einem Zugriffsversuch abmelden. Nur nicht _automatisch_ bei der 10-Minuten-Marke. – AbraCadaver

+0

Ich möchte die Sitzung zerstören, wenn jemand für 10 min. Inaktiv ist. – Varma

+0

dann setzen Sie Ihre Sitzung Timeout für 10 Minuten, und wenn der GC startet, wird es automatisch alle Session-Dateien älter als 10 Minuten. –