PHP Seite "Account erstellen" , was ist benötigt?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Zuerst einmal bezüglich des Erstellen eines Accounts:

Das kommt natürlich darauf an, welche Daten du alles von Nutzer möchtest. Das können neben Nutzernamen und Passwort evt. noch E-Mailadresse oder eine Art 'Über mich' (wie auch hier bei gutefrage) sein.

Da du von PHP sprichst empfehle ich dir, das Passwort als Hash in der Datenbank zu speichern (siehe password_hash()).

Beim Login schaust du dann im Prinzip nur, ob der angegebene Benutzer existiert und überprüfst dann (falls ein Hash in der Datenbank vorliegt) mit der Funktionen password_verify ob das angegebene Passwort mit dem Passwort-Hash von diesem Nutzer in der Datenbank übereinstimmt.

Ist das Login erfolgreich, kannst du eine Sitzung (Session) mit entsprechenden Daten befüllen.

Ich kann dir gerne auch außerhalb von gutefrage helfen!

LG

Woher ich das weiß:Hobby – Tägliche kleinere Webprojekte

Du benötigst einige HTML-Formulare/Eingabemasken (für Login und Registrierung) sowie einen Datenträger (bspw. eine Datenbank, eine Datei, ...), wo du die Accountdaten abspeichern kannst.

So wie dir schon empfohlen wurde, solltest du die bereits von PHP gebotenen Funktionen verwenden, um von dem Passwort einen Hash zu generieren und diesen später beim Login wieder zu vergleichen. Dem würde ich noch drei Punkte anfügen:

  1. Lasse nur eindeutige Nutzernamen zu. Die E-Mail-Adresse wäre eine Option.
  2. Salze den Hash zusätzlich. Den Key (salt) kannst du zufällig generieren, er sollte mit in der Datenquelle gespeichert werden.
  3. Achte darauf, für all deine Datenspeicher die selbe Zeichenkodierung zu verwenden (am besten UTF-8), denn dies ist eine der häufigsten Fehlerquellen. Setze in deinen HTML-Dokumenten (im head) den charset.
<meta charset="utf-8">

-

Auf jeder deiner Seiten solltest du (spätestens auf der Login-/Registrierungsseite) eine Session starten. Dies sollte stets der erste Aufruf im gesamten PHP-Skript sein:

<?php
  session_start();

  // ...

Diese Funktion erstellt entweder eine neue Session oder nimmt eine bereits vorhandene Session auf. Sobald eine Session gestartet ist, kannst du über das superglobale Array $_SESSION Daten in der Session speichern. Nach erfolgreichem Login könntest du bspw. einen Key setzen:

$_SESSION["loggedIn"] = "loggedIn";

und folgend stets prüfen, ob der Nutzer bereits eingeloggt ist. Wenn nicht, könnte er zurück zur Login-Seite geleitet werden:

<?php
  session_start();

  if (!isset($_SESSION["loggedIn"]) || $_SESSION["loggedIn"] !== "loggedIn") {
    header("Location: login.php");
    exit;
  }

  // user is logged in ...

Ein paar weitere Tipps (bezügl. Sicherheit) habe ich vor ungefähr einem Monat in diesem Kommentar zusammengetragen. Einiges ist optional / deinem Ermessen ausgeliefert. Doch im Hinblick auf Datenbankkommunikation solltest du Punkt 1 und 4 unbedingt stets beachten.