Ich habe diese PHP-Webanwendung entwickelt, die jetzt seit einigen Monaten läuft. Plötzlich beschwerte sich einer der Nutzer, dass er sich einloggen konnte, aber die Sitzung wurde beendet, sobald er auf einen beliebigen Button geklickt hat! Das gleiche Problem ist bei verschiedenen Browsern aufgetreten.PHP-Sitzung läuft sofort ab, wenn die Uhr des Clients in der Zukunft eingestellt wird
Nach einigen Tests stellte ich fest, dass eine neue Sitzungs-ID jedes Mal erstellt wurde, wenn der Benutzer auf eine Schaltfläche klickte, wahrscheinlich weil die ursprüngliche Sitzung abgelaufen war.
Aus irgendeinem Grund warf ich einen Blick auf die Computeruhr des Benutzers und ... Überraschung! Seine Uhr war 3 Monate in der Zukunft! Ich wusste nicht, ob das etwas mit dem Fehler zu tun haben könnte, aber ich habe die Uhr repariert. Trotzdem hat es nicht funktioniert. Ich löschte alle Cookies. Immer noch nichts. Also habe ich den Browser neu gestartet - und dann fing es wieder an zu arbeiten!
Die nächste Information, die ich über dieses Problem erhielt, war Shimon Amits Antwort auf this question. Gut, jetzt weiß ich, dass die Uhr "Fehlkonfiguration" die Ursache ist. Das Problem ist ... Ich kann nicht die Computeruhr jedes Kunden unter Kontrolle halten. Einige von ihnen haben möglicherweise ihre Computeruhren in der Zukunft eingestellt.
Meine Frage: Gibt es dafür eine Lösung? Irgendein Trick? Ich möchte nicht, dass Kunden solchen Fehlern gegenüberstehen, weil sie sie "lahm" finden und ihr Vertrauen in die Anwendung brechen, obwohl es nicht wirklich meine Schuld ist (in gewissem Sinne).
Ich denke nicht, es ist unangemessen zu erwarten, dass die Uhr eines Benutzers relativ genau ist. vielleicht nicht auf den zweiten, aber 3 Monate sind ziemlich lächerlich. Nicht so verrückt wie 20 Jahre in der Vergangenheit. –
stimme ich absolut zu. Leider werden die Benutzer ME beschuldigen, wenn die Anwendung aufhört zu arbeiten und schließlich werde ich Zeit mit der Analyse des Fehlers verschwenden müssen - wenn es in der fernen Zukunft passiert, kann ich diesen "Bug" vergessen haben und tagelang versuchen, es herauszufinden. Also suche ich nicht wirklich nach einer echten Lösung, sondern versuche nur, die Anwendung stupid-proof zu machen. – Bizarro