Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » angemeldet bleiben    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
cameron
Mitglied
Neuling


Dabei seit: 18.02.2018
Herkunft: keine Angabe
Posts: 3
     angemeldet bleiben Zitat | Bearbeiten

Hallo zusammen

ich habe das Script "Angemeldet bleiben" bei meinem Script eingebaut. Habe aber gewisse Probleme damit.

Zum aufbau:

/admin/login.php mit dem Logincode...
/admin/index.php als "geheimer bereich".

Login funktioniert, er schreibt mir die Daten in die mysql DB.

Admin Bereich funktioniert auch, aber der Code

 PHP 
1:
2:
3:
4:
//Überprüfe auf den 'Angemeldet bleiben'-Cookie
if(!isset($_SESSION['userid']) && isset($_COOKIE['identifier']) && isset($_COOKIE['securitytoken'])) {
//...
}


wird gar nie ausgeführt. Die Abfrage "!isset($_SESSION['userid']" ist bereits TRUE, da ich ja eingeloggt bin? Somit wird der ganze Block gar nicht ausgeführt. (Nach meinem Verständnis zumindest deswegen)

Das heisst, er wechselt den Token gar nie aus in der DB.

Wechsle ich die anfrage auf "isset($_SESSION['userid']" (ohne !) wird die Anfrage sauber ausgeführt und ich bekomme bei jedem aktualisieren einen neuen Token in die DB geschrieben.

Sobald ich aber den Browser schliesse und/oder den Computer neustarte etc. "verliert" er den zusammenhang und ich bin "nicht mehr eingeloggt". Wenn ich das "!" wieder einfüge überspringt er den Block wieder und ich kann wieder auf den Adminbereich zugreifen.

Interessanterweise kann ich danach wieder das "!" wieder entfernen und ich bin weiterhin eingeloggt und der Token ändert sich wieder.

Zitat:
Dieser Script überprüft, ob der User nicht eingeloggt ist und ob die notwendigen Cookies gesetzt wurden. Danach wird der Identifier und der Securitytoken aus den Cookies ausgelesen und mit der Datenbank verglichen. Stimmen alle Eingaben überein, so wird ein neuer Securitytoken geniert, dieser in der Datenbank als auch im Cookie abgespeichert und die notwendige Session-Variable $_SESSION['userid'] wird registriert.


Vielen Dank für eine allfällige Erläuterung.


18.02.2018, 10:45 Profil | PM | E-Mail  
DingsDaBums
Mitglied
Exzellenter User


Dabei seit: 12.09.2010
Herkunft: keine Angabe
Posts: 2384
      Zitat | Bearbeiten

Wieso wird dieser Teil nie ausgeführt? Der Block wird ausgeführt, wenn man die /admin/index.php aufruft, ohne dass man eingeloggt ist UND die für die "angemeldet bleiben" Funktion notwendigen Cookies besitzt. Mit diesem IF wird überprüft, ob man eben nicht eingeloggt ist, aber man "angemeldet bleiben" aktiviert hat und den Benutzer vielleicht über die Cookies einloggen kann.

Wenn die Cookies nicht gesetzt sind, dann kann der Benutzer nicht per Cookies eingeloggt werden und gilt entsprechend als nicht eingeloggt, weswegen ihm auch ein entsprechender Hinweis angezeigt wird.

Sind die Cookies aber vorhanden, werden deren Werte überprüft und der Nutzer wird bei korrekten Werten eingeloggt. Und nur wenn dieser Login per Cookie bzw. "angemeldet bleiben" erfolgreich war, wird der Token erneuert.

Edit: Was vielleicht bei dir für die Verwirrung sorgt: Es ist nicht sicher, dass man /admin/index.php immer nur eingeloggt aufruft.



Schau mal bei meinem Projekt vorbei. Vielleicht ist das ja was für dich MyStartPanel - Deine persönliche Startseite mit deinen Favoriten
Auf der Suche nach einem guten Vokabeltrainer? Vokabeltrainer Cramfire - Schnell und effektiv Vokabeln lernen

Post wurde schon 1x editiert, das letzte mal am 18.02.2018 um 11:53 von DingsDaBums
18.02.2018, 11:21 Profil | PM | E-Mail  
cameron
Mitglied
Neuling


Dabei seit: 18.02.2018
Herkunft: keine Angabe
Posts: 3
      Zitat | Bearbeiten

Hello

Vielen Dank für deine Erläuterungen. Bei mir kam die "Verwirrung" auf, weil ich mit unterordner (/admin) arbeite, ich muss die Abfrage natürlich auch auf der ../index.php (Startseite) machen, damit er prüft ob ich eingeloggt bin oder nicht.

jetzt läuft es so wie gewünscht.

Danke.

Edith: Auch habe ich nicht ganz verstanden wann er die Einträge in der DB schreibt bzw. was er genau prüft, nach ein wenig hirnen und probieren hab ich das Prinzip verstanden vom Script




Post wurde schon 1x editiert, das letzte mal am 18.02.2018 um 13:35 von cameron
18.02.2018, 13:34 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » angemeldet bleiben   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz