PHP Login erweitern

  • Hallo,


    ich würde gerne meinen Login mit PHP erweitern. Allerdings sind meine Erfahrung wie wir alles wissen nicht sogut in PHP.
    Nun mal folgender Code



    Der Vorname kann bisher Erfolgreich ausgelesen werden. Nun soll allerdings noch der Nachname ausgelesen werden können.



    Wie stelle ich das am besten an ?

  • Beitrag von BreadScript ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: fehler gefunden ().
  • Gibt es die Möglichkeit das ein Umlaut wie das scharfe S auch richtig in der Datenbank angezeigt wird ?


  • Benutze das charset utf-8 beim verbindungsaufbau kannst du das auch setzen



    "mysql:host=$host;dbname=$db;charset=utf8


    Vielen dank das hat schonmal geklappt. Nun hab ich aber ein kleines Problem nebenbei, ich würde gerne den Benutzernamen in meinem Design anzeigen lassen. Sobald ich nun einen neuen Benutzer über das PHP Formular erstelle (MYSQL) wird mir der neue Benutzer angezeigt und nicht der eigentliche der wirklich angemeldet ist.


    Ich arbeite hierbei mit SESSIONS. Ich hoffe Ihr könnt mir da weiter helfen oder mir gegebenenfalls ein paar Tipps geben.


  • Ich konnte soeben einen Fehler funden der mich etwas stutzig machte. Es werden keine Daten für die SESSION gespeichert. Nun bekomme ich für den u.a Code nur die id in die Sessions gespeichert und leider nichts weiteres. Habt Ihr da einen Tipp für mich was ich falsch gemacht habe ? Erst beim Login werden die Sessions gesetzt


  • Ich konnte den Fehler finden. Man sollte auch die Datenbank füllen. Andernfalls kriegt er ja keine Werte xD.


    Nun noch zu einer Frage, in welchen Fällen ist es wirklich sinnvoll Sessions zu verwenden und in welchen Situation sinnvoller direkt mit Select / Insert zu arbeiten ?

    Einmal editiert, zuletzt von BreadScript ()

  • Sessions kannst du verwenden sobald du globale variablen für den Besucher benötigst.


    Jedoch sollte man keine passwörter in einer Session halten, da diese geklaut und ausgelesen werden können durch session hijacking

    Stopped! Die Aussage das man keine Passwörter in einer Session halten sollte stimmt. Das sie geklaut werden kann auch, nicht aber das sie ausgelesen werden kann. (Zumindest nicht wenn es keine Ausgabe der Sessioninhalte gibt). Session Hijacking bezieht sich ja auch nur auf das Ändern des Session Cookies.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Stopped! Die Aussage das man keine Passwörter in einer Session halten sollte stimmt. Das sie geklaut werden kann auch, nicht aber das sie ausgelesen werden kann. (Zumindest nicht wenn es keine Ausgabe der Sessioninhalte gibt). Session Hijacking bezieht sich ja auch nur auf das Ändern des Session Cookies.

    Um das noch ein wenig zu erweitern zum Verständnis. Eine Session wird auf dem Server gespeichert, aber zur Identifikation gibt es eine ID auf dem Client (also in deinem Browser), also ein Session Cookie. Deshalb kann man so ohne weiteres keine Daten aus einer Session auslesen, da diese auf dem Server gespeichert ist. Möchtest du also sowas wie einen Usernamen oder eine UserID andauernd abfragen, z.B. um zu prüfen ob der Benutzer eingeloggt ist benutzt du eine Session. Passwörter speicherst du gar nicht Clientseitig ab. Das einzige was du mit Passwörtern machen solltest ist sie zu hashen (kein MD5, alles ab Sha256) und dann in einer Datenbank abzuspeichern.
    Daten, die ruhig verändert werden können und nicht nochmal von dir ausgelesen werden kannst du in einem Cookie speichern (dieser wird auf dem Client gespeichert). Wenn der Benutzer diesen also verändert ist das im Prinzip egal, da du damit dann nicht mehr rumhantierst.
    So. Möchtest du aber aus verschiedensten Gründen deine Daten in einem Cookie abspeichern, dann solltest du IMMER mit Authentification Tokens arbeiten. Bedeutet, dass dann immer ein bestimmter Wert verschlüsselt und entschlüsselt wird und nachher auf dem Server verglichen wird. Hier ist es wichtig, dass die Verschlüsselung stark genug ist, denn knack der Benutzer die Verschlüsselung kann er diesen an den Server senden und wird von diesem authentifiziert.
    Das ist aber noch deutlich komplizierter und dazu kannst du dir gerne mal etwas durchlesen:
    https://stackoverflow.com/ques…for-accessing-the-website


    Man kann mich hier gerne verbessern, falls ich was falsch dargestellt habe.

  • @idkme Soweit richtig, nur die Empfehlung mit sha256 ist identisch mit md5... heute sollte man auf stärkere Algorithmen zurückgreifen, sei es blowfish (bcrypt), whirlpool,> sha512

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Vielen dank für eure Hilfreichen Antworten die mich Persönlich ein Stück weiter gebracht haben. Nun habe ich noch eine Frage, ich würde gerne auf jeder Seite alle Daten des Benutzer´s Abfragen. Ich habe mir dazu gedacht eine PHP Datei zu erstellen. Nennen wir diese mal Eigenschaften. Diese sollte folgenden Inhalt dann haben


    PHP
    $sql = "SELECT * FROM users WHERE id = '$userid'";
    
    
    foreach ($pdo->query($sql) as $row) {
    	$edit = $row['edituser'];
    	$editlinie = $row['editlinie'];
    }
    ?>


    Nun würde ich gerne den $edit und den $editline in einer anderen Datei z.b dashboard.php abfragen und ausgeben können. Leider sind meine Ansätze dabei scheinbar falsch so das ich nicht vorran komme. Über Lösungvorschläge jeglicher Art (andere Methoden) würde ich mich sehr freuen.

  • Auch wenn es grundsätzlich ein Bad Practice ist globale Variablen zu deklarieren, gucke dir einmal "global" an. Ich würde dir aber ehr empfehlen, einmal ein Objekt (Statisch) zu haben welches dir die Daten gibt.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Vielen dank für eure Hilfreichen Antworten die mich Persönlich ein Stück weiter gebracht haben. Nun habe ich noch eine Frage, ich würde gerne auf jeder Seite alle Daten des Benutzer´s Abfragen. Ich habe mir dazu gedacht eine PHP Datei zu erstellen. Nennen wir diese mal Eigenschaften. Diese sollte folgenden Inhalt dann haben


    PHP
    $sql = "SELECT * FROM users WHERE id = '$userid'";
    
    
    foreach ($pdo->query($sql) as $row) {
    	$edit = $row['edituser'];
    	$editlinie = $row['editlinie'];
    }
    ?>

    Nun würde ich gerne den $edit und den $editline in einer anderen Datei z.b dashboard.php abfragen und ausgeben können. Leider sind meine Ansätze dabei scheinbar falsch so das ich nicht vorran komme. Über Lösungvorschläge jeglicher Art (andere Methoden) würde ich mich sehr freuen.

    Wie sieht denn dein Vorgang bisher aus? Dann können wir da direkt vielleicht berichtigen

  • Beitrag von BreadScript ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Einfach nur ein denkfehler ().
  • @idkme Soweit richtig, nur die Empfehlung mit sha256 ist identisch mit md5... heute sollte man auf stärkere Algorithmen zurückgreifen, sei es blowfish (bcrypt), whirlpool,> sha512

    Habe das Thema nur überflogen, aber zusätzlich sollte noch ein SALT verwendet werden. Wenn das schon genannt wurde, kann dieser Beitrag ignoriert werden.