Session endet

just-click

Erfahrenes Mitglied
Hallo,

ich hab ein kleines Login geschrieben, welches nach erfolgreicher Anmeldung eine Session startet. Diese Session speichert die IP sowie die ID des Anwenders.

Es funktioniert auch auf den meisten von mir getesteten PCs wunderbar, nur ist es so, dass der User, welcher mit dem Script hauptsächlich arbeitet probleme hat. Er schreibt einen Artikel und mit dem Abschicken kommt dann die Fehlermeldung, dass die Session abgelaufen ist.
Er meint, wenn er sich zu lange im Adminmenü aufhält ohne etwas zu machen, dann muss er sich wieder neu anmelden, d.h. Browser schließen, neu öffnen und erneut einloggen.

Gerade wenn er etwas hochladen will (Bilder in die Gallerie) dann ist das richtig nervig.

Ich hab jetzt bisher immer alles auf den Browser geschoben. Aber kanns nicht vielleicht sein, dass er gar keine falschen Einstellungen im Browser gemacht hat und es andere Möglichkeiten für das vorzeitige Ende einer Session gibt? (außer natürlich man schließt die aber das funktioniert nur beim Klicken auf Logout)

Ich wäre euch dankbar, wenn ihr mir helfen könntet.

Mfg,
Marcel

index.php
PHP:
   if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {
       session_start();
       if(!isset($_SESSION['IP'])) {
           $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
       }
       if($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
           echo "<p>\n";
           echo "    Ihre Sitzung ist abgelaufen,\n";
           echo "    bitte melden Sie sich erneut an.\n";
           echo "    \n";
           echo "    <a href=\"http://www.tsvgambach.de/\">Zurück zur Homepage</a>\n";
           echo "</p>\n";
           die();
       }
   }


admin.php
PHP:
            if(isset($_POST['UserID'], $_POST['Password']) AND
               login_ok(addslashes($_POST['UserID']),
                           addslashes($_POST['Password']))) {
                $_SESSION['ID'] = $_POST['UserID'];
            }
 
Zuletzt bearbeitet:
Vermutlich ist die Sitzung abgelaufen, das heißt die serverseitig gespeicherten Sitzungsdaten wurden wegen Überschreitung der Gültigkeitsdauer gelöscht. Vielleicht hängt es aber auch mit der IP-Adresse zusammen, wenn du eine Sitzung an eine IP-Adresse bindest.
 
also du meinst mit:
PHP:
ini_set('session.gc_maxlifetime',1800);

könnte es klappen? Standard steht der Wert ja auf 1440, aber ich kann mir nicht wirklich vorstellen, dass der Administrator so lange auf der Seite bleibt ohne etwas zu drücken.

Wie kann ich das jetzt am besten testen ohne den User direkt belästigen zu müssen?
 
Die Gültigkeitsdauer wird vom Zeitpunkt der letzten Änderung der Sitzungsdaten aus gerechnet. Du müsstest also bei jeder Anfrage ein Sitzungsdatum ändern, damit die Gültigkeit von der letzten Anfrage aus gewertet wird.
 
Zurück