Personalisierung

Nachdem der Kunde sich an der Website angemeldet hat, soll ihm eine Seite mit einer persönlichen Begrüßung präsentiert werden.

Um dies zu realisieren, benötigen wir Zugriff auf die Kontaktperson, die den Kunden im OMC repräsentiert. Die Kontaktperson lässt sich über das Session-Token ermitteln. Für diese Funktionalität definieren wir zunächst in der Datei session.php die Hilfsklasse Session. Hier wieder der gesamte Code, der weiter unten im Detail erläutert wird:

<?php

// Starte die Session
session_start();

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

class Session {

  // Den aktuellen Contact zu dem ggf. vorhandenen Token laden
  // oder im Fehlerfall false zurückgeben
  static function contact_from_token() {
    if (isset($_SESSION["token"])) {
      try {
        $session = OMC_Session::establishWithToken($_SESSION["token"]);
        $_SESSION["token"]= $session->token;
        return $session->contact;
      } catch (OMC_Exception $e) {
        unset($_SESSION["token"]);
      }
    }
    return false;
  }

  // Überprüft, ob ein Besucher mit seinem Token eingeloggt ist
  static function is_logged_in() {
    return (Session::contact_from_token() != false);
  }
}
?>

Der obige Code stellt zuerst sicher, dass PHP die Session verwaltet, damit später über $_SESSION auf sie zugegriffen werden kann. Ferner muss der OMC Connector eingebunden werden:

session_start();
require_once 'omc_connector/OMC_Connector.php';

Nun wird die Hilfsklasse Session definiert:

class Session {
  ...
}

Session wird zwei Methoden haben, contact_from_token() für die Ermittlung der Kontaktperson aus dem Session-Token, sowie is_logged_in() zur Ermittlung, ob die Person an der Website angemeldet ist.

contact_from_token() liest aus der Session das Token und fragt das OMC nach der dazu gehörenden Kontaktperson. Wenn das Token nicht existiert oder ungültig ist, gibt die Methode false zurück:

  static function contact_from_token() {
    if (isset($_SESSION["token"])) {
      try {
        ...
      } catch (OMC_Exception $e) {
        unset($_SESSION["token"]);
      }
    }
    return false;
  }

Tritt bei dem Versuch, aus dem Token die Kontaktperson zu ermitteln, eine (beliebige) Exception auf, ist davon auszugehen, dass das Token nicht valide ist. In diesem Fall wird es aus der Session gelöscht.

Die folgenden Anweisungen beinhalten die eigentliche Frage bezüglich der Kontaktperson. Zunächst wird $session die vom OMC gelieferte und zum Token gehörende Session zugewiesen:

        $session = OMC_Session::establishWithToken($_SESSION["token"]);

Gelingt dies, wird das Token der Session mit dem vom OMC gelieferten Token überschrieben, da es sich offenbar in der Zwischenzeit geändert hat. Ferner wird nun die Kontaktperson, die in der Session enthalten ist, ausgelesen und zurückgegeben:

        $_SESSION["token"]= $session->token;
        return $session->contact;

Die zweite Methode der Session-Klasse, is_logged_in(), überprüft, ob eine Person mit ihrem Token angemeldet ist. Hierfür wird die zuvor definierte Methode contact_from_token() aufgerufen:

static function is_logged_in() {
    return (Session::contact_from_token() != false);
  }

Liefert contact_from_token() nicht false, ist die Person angemeldet. In diesem Fall gibt is_logged_in() true zurück, andernfalls false.

Wir können die Klasse Session nun zur Ermittlung der Kontaktperson verwenden, und zwar beispielsweise in der Seite success.php, zu der der Kunde nach der Anmeldung weitergeleitet wird. Über die Kontaktperson haben wir Zugriff auf die Daten, die unter anderem für die persönliche Anrede benötigt werden.

Hier der relevante Code, der im Anschluss erläutert wird:

<?php

require_once 'session.php';

if (!Session::is_logged_in()) {
  header("Location: login.php");
}

$contact = Session::contact_from_token();

$greeting = "";
if ($contact->gender == 'M') {
  $greeting .= "Herr";
} elseif ($contact->gender == 'F') {
  $greeting .= "Frau";
} else {
  $greeting .= "Herr oder Frau";
}
$greeting .= " {$contact->last_name}";

echo "Hallo $greeting.<br />";
echo "Willkommen bei <i>Bäcker Inc.</i><br />";
echo "Weitere personalisierte Inhalte<br />";

?>

Im obigen Beispiel-Code wird zunächst die zuvor angelegte Datei session.php inkludiert, um die Session-Klasse verwenden zu können:

require_once 'session.php';

Wenn der Besucher nicht angemeldet ist, wird er zur Login-Seite weitergeleitet. Andernfalls werden der Variablen $contact die Personendaten des Kunden zugewiesen:

if (!Session::is_logged_in()) {
  header("Location: login.php");
}

$contact = Session::contact_from_token();

Wir können nun auf der Grundlage der Personendaten die persönliche Anrede zusammenstellen. Da $contact eine lokale Variable ist, kann es bei der Abfrage von Werten nicht zu Exceptions kommen. Die Anrede wird zunächst in einer Variablen (hier $greeting) gespeichert:

$greeting = "";
if ($contact->gender == 'M') {
  $greeting .= "Herr";
} elseif ($contact->gender == 'F') {
  $greeting .= "Frau";
} else {
  $greeting .= "Herr oder Frau";
}
$greeting .= " {$contact->last_name}";

Nachdem die Anrede berechnet wurde, kann sie ausgegeben werden, zusammen mit anderen – gegebenenfalls auch kundenspezifischen – Inhalten:

echo "Hallo $greeting.<br />";
echo "Willkommen bei <i>Bäcker Inc.</i><br />";
echo "Weitere personalisierte Inhalte<br />";

Das Grundgerüst für eine Webanwendung, die das Online Marketing Cockpit nutzt, um den Besuchern personalisierten Content auszuliefern, ist nun vorhanden. Unter Rückgriff auf zusätzliche, frei definierbare Personenfelder können Sie nun weitere Website-Funktionen und -Features realisieren, die auf den jeweils angemeldeten Besucher individuell zugeschnitten sind.