Hallo Michael,
Wenn ich jetzt auf irgend eines davon zugreifen möchte, mache ich das doch mit $HTTP_GET_VARS["abstimmungid"].
$_GET ist besser, da $HTTP_GET_VARS in ferner Zukunft entfallen soll und $_GET in jeder Funktion verfügbar ist - $HTTP_GET_VARS mußt Du erst mit global importieren. (und Du musst weniger tippen ;-)) Aber $HTTP_GET_VARS kannst Du natürlich auch noch verwenden.
Aber das liebe PHP macht nun auch noch folgendes: abstimmungid steht nun direkt als Variabel $abstimmungsid zur Verfügung. Ist das normal?
Leider, ja. Das ist die Einstellung register_globals. (die Du auch ausstellen kannst) Diese ist aber in neueren PHP-Versionen zum Glück standardmäßig deaktiviert. Diese Einstellung bewirkt, dass alles, was in $_ENV, $_GET, $_POST, $_COOKIE, und $_SESSION ist, auch als globale Variable zur Verfügung steht. Das ist natürlich problematisch, weil Benutzer Variablen direkt in PHP injizieren können. Beispiel:
<?php
if ($_GET['username'] == 'christian' && $_GET['password'] == 'hallo') {
$logged_in = 1;
}
if ($logged_in) {
echo 'dürfen nur eingeloggte sehen';
}
?>
Mal angenommen, jemand startet jetzt das Script mit script.php?logged_in=1 - dann hast Du eine Sicherheitslücke. Daher sollte man möglichst register_globals deaktiveren - _vor allem_ auf Produktionsumgebungen. Einige Ältere Scripte (und leider auch PHP-Tutorials) verlassen sich auf register_globals und funktionieren deswegen nicht ohne, was IMHO verkehrt ist.
Viele Grüße,
Christian
Hast Du einen Beitrag? Nur her damit!
http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[