PHP: extract($_POST) dann get_defined_vars() gibt nichts zurück... warum?

Ich habe das folgende PHP-Skript:

<?php 
  function dump_extracted_post() {
    extract($_POST);
    var_dump(get_defined_vars());
  }
  dump_extracted_post();
?>

Zu diesem Skript, ich post ein Formular mit Daten, und es ergibt sich die folgende (unerwartete) Ergebnis:

Array(0) {
}

Warum sehe ich nicht das die geposteten Daten?

Gibt es etwas, was ich vermisst habe, in mein Verständnis von extract() oder get_defined_vars()? Ist es eine Art von Sicherheits-Einstellung, die möglicherweise stören die Extraktion von $_POST ?

Ich bin mir bewusst, verpönt Natur-Extrakt, so vielleicht ist es eine Frage der Sicherheit, sondern Scannen die php-docs scheint es nicht zu erwähnen, wie Problem. Ich möchte dies nutzen, um einige einfache templates.

Wenn ich das Skript ändern zu:

<?php 
  function dump_extracted_post() {
    var_dump($_POST);
  }
  dump_extracted_post();
?>

Sehe ich die geposteten Daten wie erwartet (also ja, ich bin definitiv Buchungsdaten).

Ebenso wenn ich das Skript ändern zu:

<?php 
  function dump_extracted_post() {
    $a = 'moocows';
    var_dump(get_defined_vars());
  }
  dump_extracted_post();
?>

Sehe ich die erwartete Ausgabe:

array(1) {
  ["a"]=>
  string(7) "moocows"
}
  • Ihre Funktion funktioniert gut auf meinem localhost. Haben Sie überprüft, um zu sehen, ob extract() ist deaktiviert auf deinem server?
  • Ja, es ist aktiviert und funktioniert: extract(array('a'=>'b')); var_dump(get_defined_vars()); funktioniert wie ich erwarte... (nur nicht, wenn ich ersetzen Sie das array mit $_POST). PHP 5.3.2.
  • Ihre ursprüngliche Funktion funktioniert gut für mich auch. Könnten Sie bitte zeigen Sie Ihre HTML-Formular?
InformationsquelleAutor MikeL | 2013-03-06
Schreibe einen Kommentar