Vergessen von Formulardaten in PHP-Programm bei METHOD=POST
Hilfe, ich habe SuSE 8.1 installiert (incl. apache und mod_php4). Seit dem funktioniert das Übergeben der Formularedaten in meinen PHP-Programmen nicht mehr. Beispiel: ... <FORM METHOD=POST ACTION="pgm.php?xy=123"> Der Wert xy ist in pgm.php nicht 123 sondern er ist leer. Wer weis was? -- Mit freundlichen Grüßen Hubertus Schröder Staatliches Umweltamt Lippstadt fon: +49 2941 / 986-371 fax: +49 2941 / 767-093 mailto:Hubertus.Schroeder@stua-lp.nrw.de
Hubertus Schröder wrote:
Hilfe, ich habe SuSE 8.1 installiert (incl. apache und mod_php4). Seit dem funktioniert das Übergeben der Formularedaten in meinen PHP-Programmen nicht mehr.
Beispiel:
... <FORM METHOD=POST ACTION="pgm.php?xy=123">
Der Wert xy ist in pgm.php nicht 123 sondern er ist leer.
Wer weis was?
Hi, wie in der Doku von PHP zu lesen ist.... register_globals ist aus Sicherheitsgruenden bei PHP >=4.2.x ausgeschaltet. Du musst das entweder beim Compilieren einschalten, oder das Environment selber laden: ## Der 'Ersatz' fuer register_globals foreach ($HTTP_POST_VARS AS $key=>$val) { # Filtere Zeichen, die ich nicht haben mag.... $badchars="/([\[\]\{\}\)\(\;\&\#\*\,\$\/<>\"\'\`]*)/es"; $i= preg_replace($badchars,'',$val); ## Stelle die Variable global zu Verfuegung... eval("\$$key = '$i';"); } foreach ($_SERVER AS $key=>$val) { eval("\$$key = '$val';"); } Hier findest Du jede Menge Tips dazu: http://www.php.net/manual/en/printwn/features.http-auth.php -- so long... bernd ------------------------------------------------------------------------
Bernd Obermayr wrote:
Du musst das entweder beim Compilieren einschalten, oder das Environment selber laden:
Einen ./configure Switch gibt es dafür nicht. Die php.ini Direktive 'register_globals' (On ("altes Verhalten")/ Off (default ab PHP >= 4.2.0)) ist hierfür zuständig.
## Der 'Ersatz' fuer register_globals foreach ($HTTP_POST_VARS AS $key=>$val) {
Besser die autoglobalen Variablen ($_GET, $_POST, $_REQUEST, ...) verwenden. -- Sebastian Bergmann http://sebastian-bergmann.de/ http://phpOpenTracker.de/ Did I help you? Consider a gift: http://wishlist.sebastian-bergmann.de/
Sebastian Bergmann wrote:
Bernd Obermayr wrote:
Du musst das entweder beim Compilieren einschalten, oder das Environment selber laden:
Einen ./configure Switch gibt es dafür nicht. Die php.ini Direktive 'register_globals' (On ("altes Verhalten")/ Off (default ab PHP >= 4.2.0)) ist hierfür zuständig.
Hi, das hab ich in php.ini auf on gesetzt, ging trotzdem nicht.
## Der 'Ersatz' fuer register_globals foreach ($HTTP_POST_VARS AS $key=>$val) {
Besser die autoglobalen Variablen ($_GET, $_POST, $_REQUEST, ...) verwenden.
Mal gucken.. ;)
-- -- so long... bernd ------------------------------------------------------------------------
* Hubertus Schröder schrieb am Montag, 2002-12-02:
ich habe SuSE 8.1 installiert (incl. apache und mod_php4). Seit dem funktioniert das Übergeben der Formularedaten in meinen PHP-Programmen nicht mehr.
<FORM METHOD=POST ACTION="pgm.php?xy=123">
Der Wert xy ist in pgm.php nicht 123 sondern er ist leer.
Der Wert $xy oder der Wert $_GET['xy'] ? Außerdem würde ich ein <input type="hidden" name="xy" value="123"> empfehlen. Ich habe zwar keinen speziellen Grund dafür, aber es sieht IMHO besser aus. -- Christian Ullrich Registrierter Linux-User #125183 "Deliver."
Hallo Hubertus, schau Dir mal die Datei php.ini an, seit der Version 4.2.x (bzw. eventuell auch früher), werden externe Variablen, die beispielsweise durch eine Form übermittelt worden sind, nicht mehr automatisch globale Variablen. Die entsprechende Option in der php.ini heisst "register_globals", siehe auch www.php.net! Gruß, Sebastian www.wolfgarten.com
participants (5)
-
Bernd Obermayr
-
Christian Ullrich
-
Hubertus Schröder
-
Sebastian Bergmann
-
Sebastian Wolfgarten