InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: PHP - Session automatisch nach 5 Minuten Inaktivität beenden Artikel anzeigen

Stephan schrieb am Dienstag, den 7 Juli 2020 #1
Vielen Dank Werner, tolles Beispiel!

Wäre es denn auch möglich eine SESSION alle 15 Minuten, auch bei vermeintlicher Inaktivität (z.B. langwieriger Formulareingaben) automatisch verlängern zu lassen?

Danke Dir und Liebe Grüße :)
Werner schrieb am Samstag, den 11 Juli 2020 #2
Bei Formulareingaben sollte die Session dann halt entsprechend erhöht werden.

Eine weitere aber kompliziertere Möglichkeit wäre, alle X Minuten über JavaScript (Ajax) eine Anfrage an den Webserver senden der dann die Session $_SESSION['expires'] automatisch um weitere X Minuten erhöht.
Peter schrieb am Samstag, den 11 Juli 2020 #3
@stephan...
wenn die SESSION alle 15 Minuten verlängert werden soll, dann geht der Sinn und Zweck an einer Session verloren bzw wozu diese überhaupt setzen?

Beispiel Cookie und Session mit einzigartiger Session-Nr

function.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

<?php
// User Id
function holeUserID()
    {
    
$user_id md5(uniqid(rand(), true));
        if(isset(
$_COOKIE['user_id'])) {
            
$user_id $_COOKIE['user_id'];
        }
        if(isset(
$_SESSION['user_id'])) {
            
$user_id $_SESSION['user_id'];
        }
    return 
$user_id;
    }



jede PHP Seite wo es verwendet wird:

1
2
3
4
5
6
7
session_start();
...
// User_ID Cookie setzen zB für 1 Woche
$user_id = holeUserID();
setcookie('user_id', $user_id, strtotime('+7 days'));
...
Stephan ✶✶✶✶✶ schrieb am Samstag, den 11 Juli 2020 #4
Das ist eine gute Idee 👍👍

Wüsstest Du, aus dem Stehgreif, wie die Ajax Methode zu realisieren wäre?

Ich hätte folgenden Ansatz... Was denkst Du?

<script type="text/javascript">
var xhr = new XMLHttpRequest();
var hash = "<?=$ajaxhash;?>";
window.onload = function refresh(){

xhr.open("GET", "refresh.php?hash=" + hash, true);
xhr.send(null);

xhr.onreadystatechange = function refresh() {
}

setInterval(function refreshintervall(){

xhr.open("GET", "refresh.php?hash=" + hash, true);
xhr.send(null);

xhr.onreadystatechange = function refreshintervall() {
}

}, 30000);
}
</script>

und die refresh.php mit session_start(); beginnen...

Leider ändert sich die die Session-Time nicht 😟
Werner schrieb am Sonntag, den 12 Juli 2020 #5
Ich habe das Beispiel mal ohne setcookie() gemacht, also mit einer einfachen Session:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
session_start
();
if (!isset(
$_SESSION['ablauf'])) {
 
$_SESSION['ablauf'] = $_SERVER['REQUEST_TIME'] + 300;
}
?>
<!DOCTYPE html>
<html lang="de">
 <head>
  <meta charset="UTF-8">
  <title></title>
 </head>
<body>

<?=date('H:i:s'$_SESSION['ablauf'])?>
<div id="output"></div>

<script>
const XHR = new XMLHttpRequest();
window.setInterval(function () {
 XHR.open("GET", "refresh.php", true);
 XHR.send(null);
 XHR.onreadystatechange = function () {
   if (XHR.readyState >= 4 &&
      XHR.status == 200) {
       document.getElementById("output").innerText = XHR.responseText;
   }
 }
},3000);
</script>

refresh.php:
1
2
3
4
5
6
7
8
<?php
session_start
();
if (isset(
$_SESSION['ablauf'])) {
 
$_SESSION['ablauf'] = $_SERVER['REQUEST_TIME'] + 2500;

echo 
date("H:i:s"$_SESSION['ablauf']);
}
?>
Armin ✶✶✶✶✶ schrieb am Donnerstag, den 27 Mai 2021 #6
Moin aus Emden,

wo baue Ich das PHP-Script ein....

MFG
Werner schrieb am Freitag, den 28 Mai 2021 #7
Hallo,
ganz oben in der Datei, vor jeglicher HTML-Ausgabe ...
MFG
Armin ✶✶✶✶✶ schrieb am Freitag, den 28 Mai 2021 #8
Moin,

Danke für die schnelle Antwort.... Ich Arbeite mit PHP-Fusion da ist alles mit PHP...
wenn Ich, das da einbaue, fliegt mir das ganze Theme um die Ohren.

Habe es dann versucht über ein Panel in der Mitte da reagiert es aber nicht.

mfg
Werner schrieb am Dienstag, den 1 Juni 2021 #9
Das Script hat nicht mehr funktioniert, habe dies jetzt durch ein anderes ersetzt.
Armin schrieb am Dienstag, den 1 Juni 2021 #10
Moin,

Ok, dann kann Ich ja lange ausprobieren bis der Arzt kommt (lach).
Aber danke... erstmal...

mfg