foreach-Schleife

Die Variante dient einzig und allein der Verarbeitung von Arrays und Objekten. Im folgenden Beispiel werden alle assoziativen Indizes des Arrays und deren Werte ausgegeben.

<?php
  $adresse ['name'] = 'Claudia Mustermann';
  $adresse ['straße'] = 'Musterstraße 0';
  $adresse ['plz'] = '00000';
  $adresse ['ort'] = 'Musterstadt';
  $adresse ['mail'] = 'info@mustermann.de';

  foreach($adresse  as $key => $value )
  {
    echo 
$key. ' - '.$value. '<br>';
  }
?>

name - Claudia Mustermann
straße - Musterstraße 0
plz - 00000
ort - Musterstadt
mail - info@mustermann.de



foreach

foreach ($cook_daten as $key=>$element) {
echo "$key: $element
";
${"co_$key"} = $element; }   Extrahierte Cookie Daten ausgeben und an dynamische Variablen übergeben.



Cookies in PHP

Cookies können mit PHP durch die Funktion setcookie() erzeugt werden. Die Syntax lautet wie folgt: setcookie(name[, value[, expires[, path[, domain[, secure]]]]]); Da Cookies Bestandteile eines HTTP-Headers sind, muss diese Funktion genau wie bei der Funktion header()aufgerufen werden, noch bevor irgendeine andere Ausgabe an den Browser erfolgt. Im folgenden Beispiel wird mithilfe der Funktion setcookie() ein Cookie gesetzt: Beispiel <?php // Inhalt festlegen $inhalt = "Ich bin dein Cookie!"; // Cookie erzeugen setcookie("cook_first_one",$inhalt, time()+600); // Prüfen if (!$_COOKIE[cook_first_one]) { echo "Cookie ist nicht vorhanden!"; } else { echo $_COOKIE[cook_first_one]; } ?> Die Funktion erzeugt ein Cookie mit dem Namen cook_first_one und dem Inhalt aus der Variablen $inhalt. Der Parameter expires, der die Lebensdauer des Cookies in Sekunden nach dem 1.1.1970 angibt, wird durch die Funktion time() und ein Offset von 600 Sekunden erzeugt. Die Funktion time() gibt dabei den aktuellen Unix-Zeitstempel zurück, sodass auf diese Weise für das Cookie eine Lebensdauer von zehn Minuten festgelegt wird. Wird keine Zeit angegeben, ist das Cookie so lange gültig, bis der Browser geschlossen wird. Die übrigen Parameter für path, domain und secure wurden nicht gesetzt. Beim Aufruf der Seite wird das entsprechende Cookie gesetzt. Sofern Sie Ihren Browser entsprechend konfiguriert haben, wird vor dem Setzen von Cookies eine entsprechende Meldung angezeigt, aus der Sie alle wesentlichen Daten des Cookies entnehmen können. Bild 4.5: Browser meldet Cookie Darüber hinaus passiert zunächst gar nichts. Beim nächsten Aufruf derselben Seite kann die im Cookie abgelegte Information verwendet werden. Dem verarbeitenden Skript steht das Cookie in Form einer Variablen $cook_first_one zur Verfügung. Der Inhalt wird mithilfe des echo-Befehls ausgegeben. Hinweis: Beachten Sie, dass der Wertebereich des Cookies automatisch URL-konform kodiert (urlencoded()) wird, sobald Sie das Cookie senden, und wenn es gelesen wird, wird es automatisch URL-konform dekodiert (urldecode()) und einer Variablen zugewiesen, die denselben Namen wie das Cookie trägt. Namenskonflikte Da das Auslesen der Cookies durch Übergabe des Inhalts in eine gleichlautende Variable erfolgt, kann es Namenskonflikte mit GET- oder POST-Daten geben. Welche Datenquelle den Vorrang besitzt, kann in der Konfigurationsdatei php.ini festgelegt werden. Suchen Sie den folgenden Eintrag im Abschnitt [Data Handling]: gpc_order = gpc; Wenn der Eintrag nicht existiert, fügen Sie ihn hinzu. Der Reihenfolge wird durch das Argument bestimmt: •g steht für GET •p für POST •c für Cookie Mit gpc ist also die Reihenfolge GET->POST->Cookie gemeint. Um solche Konflikte zu vermeiden, sollten Sie Cookies konsequent nach einem bestimmten Schema benennen, z. B. cook_xxxxx oder co_xxxx. Dann können Namenskonflikte erst gar nicht entstehen. Sollte diese Methode keine ausreichende Flexibilität bieten, können Sie die Cookies auch direkt aus der globalen Servervariablen $_COOKIE ($HTTP_COOKIE_VARS) auslesen. Im folgenden Beispiel wird die globale Servervariable verwendet, um sämtliche Cookies auszugeben: <?php foreach ($_COOKIE as $key=>$element) { echo "$key: $element
"; } ?> Ausgabe cook_first_one: Ich bin dein Cookie! Cookies mit mehreren Variablen In der Praxis werden im Attribut value eines Cookies in der Regel die Inhalte mehrerer Variablen untergebracht. Hierzu sind einige Techniken erforderlich, bei denen die bereits beschriebenen Arrayfunktionen von PHP eingesetzt werden können. Um die Inhalte von mehreren Variablen einem Cookie zu übergeben, kann wie folgt vorgegangen werden. Zunächst werden die Variablen mit der Funktion array() an ein Array übergeben. Anschließend wird dieses Array mit der Funktion implode() in eine Zeichenfolge konvertiert. Diese Zeichenfolge wird dann dem Attribut value des Cookies als Wert zugewiesen. Beispiel <?php // Prüfen – Cookie vorhanden? if (isset($_COOKIE['cook_besucher'])) { // Cookie Daten extrahieren $cook_daten = explode("&",$_COOKIE['cook_besucher']); // Extrahierte Cookie Daten ausgeben und an dynamische // Variablen übergeben. foreach ($cook_daten as $key=>$element) { echo "$key: $element
"; ${"co_$key"} = $element; } // Formatierte Ausgabe echo " Personalisierte Website

Herzliche Willkommen $co_0 $co_1
Ihre Lieblingsfarbe ist: $co_2
"; } else { // Formular aufrufen eingabe_form(); } // Eingabeformular + Cookie-Generierung function eingabe_form() { if (!$_POST['Submit']) { echo " Personalisierte Website

Vorname:

Nachname:

Hintergrund:

"; } else { $daten = array($_POST["vorname"],$_POST["nachname"],$_POST["farbe"]); $daten_string = implode("&",$daten); setcookie("cook_besucher", $daten_string, time()+600); echo "Cookie wurde gesetzt!"; unset($_POST['Submit']); } } ?> Bild 4.6: Schritt 1: Eingabeformular Bild 4.7: Schritt 2: Cookie wurde gesetzt. Bild 4.8: Schritt 3: Cookie-Daten werden ausgegeben. Um die im Cookie enthaltenen Daten verwenden zu können, müssen sie entsprechend behandelt werden. Hierzu überführen wir die Zeichenfolge des Cookies in die einzelnen Variablen $co_0, $co_1 und $co_2. Die Funktion, die Ihnen hierbei behilflich ist, ist explode(). Mit ihr und dem in der Cookie-Zeichenfolge enthaltenen Trennzeichen werden die Bestandteile in das Array $cookie_daten überführt. Die in diesem Array abgelegten Werte können dann entweder direkt aus dem Array ausgelesen oder auch in die entsprechenden Variablen $co_0 bis $co_2 umgewandelt und dann weiterverwendet werden. Hinweis: Diese Vorlage kann Ihnen dazu dienen, Ihre eigene Website zu personalisieren. Ihre Besucher werden es Ihnen sicher danken. Cookies im Array Sie können auch ein Array an Cookies setzen, indem Sie die Array-Schreibweise verwenden. Hierdurch werden so viele Cookies gesetzt, wie Ihr Array Elemente hat. Sobald das Cookie von Ihrem Skript gelesen wird, werden sämtliche Werte in ein einziges Array mit dem Cookienamen eingelesen: <?php // Coookies im Array erzeugen setcookie ("cookie[eins]", "Erster"); setcookie ("cookie[zwei]", "Zweiter"); setcookie ("cookie[drei]", "Dritter"); // Nach dem Neuladen der Seite wieder ausgeben if (isset($_COOKIE['cookie'])) { foreach ($_COOKIE['cookie'] as $key=>$element) { echo "$key : $element
"; } } ?>

Ausgabe

eins : Erster
zwei : Zweiter
drei : Dritter

Quelle: http://pool.urz.uni-halle.de/selfphp/praxisbuch/ps-s199-g34.html