Eine Zahl als Sessionindex
Nice to know | letzte Änderung am 05. April '10 um 00:00 Uhr
Der Zugriff auf eine Session gestaltet sich im Allgemeinen wie der Zugriff auf ein normales Array.
<?php
session_start();
$_SESSION['foo'] = 'bar';
// Ausgabe: bar
echo $_SESSION['foo'];
Möchte man aber numerische Indizes verwenden, macht einem PHP einen Strich durch die Rechnung. Bei folgendem Code erhält man eine interessante Fehlermeldung.
<?php
error_reporting(E_ALL | E_STRICT);
session_start();
$_SESSION['2'] = 'bar';
echo $_SESSION['2'];
Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
Wenn man sich nun daran erinnert, was man ganz zu Beginn seiner PHP-Karriere über Variablennamen gelernt hat, kann man sich dies vielleicht erklären. Variablennamen dürfen nicht mit Zahlen beginnen! Folgender Code wirft also eine Fehlermeldung.
<?php
error_reporting(E_ALL | E_STRICT);
$2 = 'bar';
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in ...\test.php on line 4
Nun muss man sich noch klar machen, wie diese Konvention mit unserem Problem zusammenhängen könnte. Das Stichwort lautet: register_globals. Diese Servereinstellung erlaubt es dem Entwickler auf Superglobale Variablen wie $_GET, $_POST oder $_SESSION einfach über
<?php
echo $_SESSION['index'];
// mit register_globals = on auch über
// echo $index;
zuzugreifen.
Vergeben wir nun also eine Zahl als Sessionindex, würde das bedeuten, dass wir im Code auf den Inhalt der Session über eine Variable zugreifen könnten, die lediglich aus einer Zahl bestünde/mit einer Zahl beginnen würde und das ist in PHP nicht möglich.
Weitere Hinweise zum Thema gibt es unter: http://www.php.de/php-einsteiger/66283-sessionwerte-uebergeben-2.html