Anmeldung

Nachdem der neue Kunde sich registriert und seine Zugangsdaten für die Website erhalten hat, kann er sich an der Website anmelden, um beispielsweise seine Probelieferung anzufordern. Für die Anmeldung verwenden wir in diesem Beispiel eine Anmeldeseite (etwa login.php), die folgenden für die Anmeldung über das OMC relevanten Code enthält:

<?php

// Connector einbinden
require_once 'omc_connector/OMC_Connector.php';

if (isset($_POST["login"]) && isset($_POST["password"])) {
  $errors = array();
  try {
    $session = OMC_Session::establish($_POST["login"], $_POST["password"]);
    session_start();
    $_SESSION["token"]= $session->token;
    header("Location: success.php");
  } catch (OMC_AuthenticationFailedException $e) {
    $errors[] = "Passwort oder Username falsch.";
  } catch (OMC_Exception $e) {
    $errors[] = "Ein allgemeiner Fehler ist mit dem OMC aufgetreten.";
  }
}

if (isset($errors) && !empty($errors)) {
  echo "Folgende Fehler sind aufgetreten:<br />";
  echo "<ul>";
  foreach ($errors as $error) {
    echo "<li>$error</li>";
  }
  echo "</ul>";
}
?>

<form action="" method="POST">
  <div>
    <label for="login">Login:</label>
    <input type="text" name="login" />
  </div>
  <div>
    <lable for="password">Passwort:</label>
    <input type="password" name="password" />
  </div>
  <div>
    <input type="submit" />
  </div>
</form>

Wie bei allen Seiten, die den OMC Connector nutzen, muss dieser zunächst eingebunden werden:

require_once 'omc_connector/OMC_Connector.php';

Benutzername und Passwort können erst überprüft werden, nachdem das Formular abgeschickt wurde:

if (isset($_POST["login"]) && isset($_POST["password"])) {
  // ...
}

Auch hier ist es wichtig, Exceptions abzufangen. Insbesondere sollte dem Besucher mitgeteilt werden können, dass seine Anmeldedaten nicht korrekt sind. In diessem Fall wird OMC_AuthenticationFailedException ausgelöst:

  // ...
  $errors = array();
  try {
    // ...
  } catch (OMC_AuthenticationFailedException $e) {
    $errors[] = "Passwort oder Username falsch.";
  } catch (OMC_Exception $e) {
    $errors[] = "Ein allgemeiner Fehler ist aufgetreten.";
  }

Ist die Kombination aus Anmeldename und Passwort im OMC hinterlegt, kann eine Session initialisiert werden:

    $session = OMC_Session::establish($_POST["login"], $_POST["password"]);

Hierbei wird in $session ein Token hinterlegt, mit dem die Session eindeutig identifiziert wird, und das im weiteren Verlauf des Websitebesuchs zur Wiedererkennung verwendet werden kann. Diese Operation ist erfolgreich, wenn sie keine Exception auslöst.

Die Session kann nun beginnen, und das Token kann in der Session-Variablen token abgelegt werden:

    session_start();
    $_SESSION["token"]= $session->token;

Nach erfolgreicher Anmeldung an der Website wird der Kunde in diesem Beispiel zur Seite success.php weitergeleitet (er könnte auch zur zuletzt besuchten Webseite weitergeleitet werden):

    header("Location: success.php");

Falls Fehler aufgetreten sind, werden diese vor dem Formular angezeigt, damit der Besucher darauf reagieren kann:

if (isset($errors) && !empty($errors)) {
  echo "Folgende Fehler sind aufgetreten:<br />";
  echo "<ul>";
  foreach ($errors as $error) {
    echo "<li>$error</li>";
  }
  echo "</ul>";
}
?>

Zum Schluss das Login-Formular, das der Besucher ausfüllen und abschicken kann. Es wird beim ersten Aufruf des Codes immer angezeigt, weil weder Formulardaten ($_POST["login"] und $_POST["password"]) gesetzt noch Fehler ($errors) aufgetreten sein können.

<form action="" method="POST">
  <div>
    <label for="login">Login:</label>
    <input type="text" name="login" />
  </div>
  <div>
    <lable for="password">Passwort:</label>
    <input type="password" name="password" />
  </div>
  <div>
    <input type="submit" />
  </div>
</form>

Durch die Session, die über das Token der angemeldeten Person zugeordnet ist, können nun personenspezifische Funktionen angeboten oder ausgeführt werden. Ein Beispiel hierfür finden Sie im nächsten Abschnitt.