Sitzungen in AngularJS und PHP-Anwendung

8

Ich habe eine AngularJS-Anwendung, die ich aktualisiere, um PHP 7 zu verwenden. Derzeit habe ich eine benutzerdefinierte Session-Handler-Einrichtung für Sitzungen:

Benutzerdefinierter Sitzungshandler (session.php)

%Vor%

In meinem app.js habe ich eine kontinuierliche Überprüfung, ob der Benutzer authentifiziert ist und auf die Anwendung zugreifen kann.

App.js

%Vor%

Im obigen Code läuft isAuthenticated isUserAuthorized.php

isAuthenticated

%Vor%

isUserAuthorized.php

%Vor%

Die Sitzung sollte gestartet werden, wenn session.php benötigt wird. Es scheint jedoch, dass dies nicht geschieht. Beim Zugriff auf die Anwendung wird die Anmeldeseite angezeigt, aber isUserAuthorized.php gibt eine Warnung aus:

  

Warnung: session_start (): Sitzungsdaten konnten nicht gelesen werden: Benutzer (Pfad: / var / lib / php / mod_php / session) in der Sitzung.php

Wenn ich die Login -Schaltfläche wähle, wird login.php aufgerufen, aber der Benutzer wird trotz falscher Zugangsdaten direkt in die Anwendung gebracht.

login.php

%Vor%

Ich bin mir nicht ganz sicher, was dieses seltsame Verhalten verursacht und warum die Sitzung nicht erstellt wird. Muss ich die Funktion sess_write explizit aufrufen?

Aktualisieren

Ich habe festgestellt, dass das Entfernen von require_once 'session.php' von login.php das richtige Verhalten verursacht. Der Benutzer kann sich anmelden, wenn er gültige Anmeldeinformationen angibt. Die Sitzungsdaten werden jedoch immer noch nicht in die Datenbank geschrieben. Irgendeine Idee warum?

    
Sara Tibbetts 14.07.2017, 17:28
quelle

1 Antwort

1

Die Probleme sind auf meinen Session-Handler zurückzuführen. Ab PHP 7 muss die Funktion sess_read eine Zeichenfolge zurückgeben. Dies verursachte die Warnung:

  

Warnung: session_start (): Sitzungsdaten konnten nicht gelesen werden: Benutzer (Pfad: / var / lib / php / mod_php / session) in der Sitzung.php

Ich habe das behoben, indem ich '' zurückgegeben habe, wenn $data war null .

Dies verursachte Probleme mit meiner sess_write -Funktion, die wusste, wann und wann zu aktualisieren ist. Ich habe das durch Ändern der SQL behoben.

Letztendlich habe ich den Session-Handler zu einer Klasse gemacht, wie im Endergebnis gezeigt:

%Vor%     
Sara Tibbetts 18.07.2017, 21:14
quelle