• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP-Authentifizierung

LudwigM

Mitglied
Guten Morgen,
wie funktioniert eine Authentifizierung generell?
Nehmen wir an ich nutze PHP-Auth. Dann meldet sich der Nutzer an:
Code:
try {
    $auth->login($_POST['email'], $_POST['password']);

    echo 'User is logged in';
}
catch (\Delight\Auth\InvalidEmailException $e) {
    die('Wrong email address');
}
catch (\Delight\Auth\InvalidPasswordException $e) {
    die('Wrong password');
}
catch (\Delight\Auth\EmailNotVerifiedException $e) {
    die('Email not verified');
}
catch (\Delight\Auth\TooManyRequestsException $e) {
    die('Too many requests');
}

Wie gehe ich dann in den jeweiligen Fällen (erfolgreicher Login / fehlgeschlagener Login) vor?
Nehmen wir an, ich habe für beide Fälle HTML-Code. Im Falle eines erfolgreichen Logins soll die eigentlich aufgerufene Seite angezeigt werden. Bei einem fehlgeschlagenen Login soll dazu eine Meldung erscheinen.
 

sveka

Mitglied
PHP:
try {
    $auth->login($_POST['email'], $_POST['password']);

    echo 'User is logged in';
   
    // Hier auf die INTERNE Seite weiterleiten (ggf. mit SESSION arbeiten)
}
catch (\Delight\Auth\InvalidEmailException $e) {
    die('Wrong email address');
}
catch (\Delight\Auth\InvalidPasswordException $e) {
    die('Wrong password');
}
catch (\Delight\Auth\EmailNotVerifiedException $e) {
    die('Email not verified');
}
catch (\Delight\Auth\TooManyRequestsException $e) {
    die('Too many requests');
}
 

LudwigM

Mitglied
// Hier auf die INTERNE Seite weiterleiten (ggf. mit SESSION arbeiten)
Was genau meinst du damit?
Bsp: man navigiert auf die index.php, diese hat den obigen Code. Dann wird man zu inc.index.php weitergeleitet? Oder eingebunden per include? Meint intern, dass diese nicht öffentlich ist, also oberhalb des Verzeichnisses www liegt?
 

sveka

Mitglied
Ich kenne den Aufbau deiner Seite nicht. Wohin soll denn weitergeleitet werden? Welche Seite möchtest Du aufrufen?
 
G

Gelöschtes Mitglied 36401

Guest
man navigiert auf die index.php, diese hat den obigen Code
Nein, die index.php sollte diesen Code nicht haben. In der Regel macht man das so:

In jeder Seite, die geschützt werden soll, schreibt man das an den Anfang oder bindet es per include am Anfang ein:
PHP:
<?php
  session_start();
 
  if (! isset($_SESSION['validUser']))
  {
     header ("Location: login.php");
     exit;
  }
?>
In der Datei login.php wird dann Benutzername/Passwort abgefragt und geprüft. Sind die eingegebenen Daten korrekt, setzt man eine Session-Variable, im Beispiel $_SESSION['validUser'] und leiter dann auf die geschützte Seite weiter.
 
Oben