In vielen Tutorials, Büchern und „alten“ Scripten wird noch wie im folgenden Beispiel folgt auf Eingabedaten des Benutzers zugegriffen:
Gib eine Zahl ein:
<?php if (isset($zahl)) {echo " Du hast $zahl eingegeben."; } ?\> Die benannten Formularfelder werden also direkt als Variable im Code verwendet. Dies wurde aus Sicherhehitsgründen (ein Angreifer kann evtl. nicht initialisierte Variablen "von aussen" setzen) mit PHP Version 4.2.0 in den Standardeinstellungen deaktiviert. Der Standardwert für die dafür verantwortliche Einstellung **register\_globals** wurde von _on_ auf _off_ geändert. Scripte, die nach diesen Schema auf Eingabedaten zugreifen, funktionieren daher mit einer aktuellen PHP Version **nicht** mehr. Zum Zugriff auf Eingabedaten wurden stattdessen die Felder _$\_GET_ (Daten, welche per URL übermittelt wurden), _$\_POST_ (gesendete Formulardaten), _$\_COOKIE_ (Cookies), _$\_REQUEST_ (Kombination der anderen) [und weitere](http://www.php.net/manual/de/language.variables.predefined.php) eingeführt. Diese sind "superglobal", können also auch in Funktionen ohne vorheriges importieren mit _global_ verwendet werden. Das obige Beispiel sieht unter Benutzung dieser Variablen so aus: Gib eine Zahl ein: <?php if (isset($_POST['zahl'])) {
echo ' Du hast '.$\_POST['zahl'].' eingegeben.'; } ?\> Es wird also $\_POST['zahl'] statt $zahl zur Abfrage der Eingabedaten verwendet. In neuen Scripten sollte man immer diese Methode zum Zugriff auf Eingabedaten verwenden, auch wenn man, wenn man Zugriff auf die PHP-Konfiguration hat, register\_globals auch wieder einschalten könnte, oder per _import\_request\_variables_ wieder als "normale" Variablen verfügbar machen könnte. Sollte es aufgrund eines alten Scriptes unbedingt nötig sein, register\_globals wieder einzuschalten, gibt es folgende Möglichkeiten: - php.ini (wo diese sich befindet, zeigt <?php phpinfo() ?> an): _register\_globals on_
-
Apache: httpd.conf oder Konfiguration des virtuellen Hosts: php_flag register_globals on
-
Apache: .htaccess (pro Verzeichnis, kann per AllowOverride deaktivert sein): php_flag register_globals on