Johannes Zeller: übergebenes Array in Link verpacken

Beitrag lesen

Hallo Cornelia,

$_SESSION=$tierdetail;
echo "<a href='seite3.php'>seite3</a> ";

Mit error_reporting auf E_ALL gesetzt (was man beim Entwickeln _immer_ tun sollte) bekommt man ungefähr folgende Fehlermeldungen:

Notice: Unknown: Skipping numeric key 1. in Unknown on line 0
Notice: Unknown: Skipping numeric key 0. in Unknown on line 0

Der Grund dafür ist, dass du für das Array $_SESSION nur Strings als Indizes verwenden darfst. Du solltest $tierdetail deswegen auch nicht direkt der Variable $_SESSION zuweisen, sondern sie dem Array, wofür die Variable $_SESSION steht hinzufügen. Richtig gewesen wäre also:

$_SESSION['tierdetail'] = $_REQUEST['tierdetail'];

Ich habe $_REQUEST['tierdetail'] statt $tierdetail verwendet, denn die Variante, dass Formulardaten in normalen Variablen stehen funktioniert nur, wenn register_globals in der Konfiguration aktiviert ist, wovon von vielen Seiten abgeraten wird und was auch in zukünfitgen PHP-Versionen komplett abgeschafft wird. Stattdessen sollte man die superglobalen vordefinierten Array $_GET, $_POST, $_COOKIE oder $_REQUEST verwenden.

$tierdetail = array("0" => "Katze", "1" => "Hund");

Der kleine aber feine Unterschied liegt darin, dass du hier Strings "0" und "1" statt Zahlen als Array-Indizes verwendest.

Schöne Grüße,

Johannes