Heim  >  Artikel  >  Backend-Entwicklung  >  Warum fehlen meine $_POST-Werte in meinem PHP-Skript?

Warum fehlen meine $_POST-Werte in meinem PHP-Skript?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 12:18:02979Durchsuche

Why are My $_POST Values Missing from My PHP Script?

Fehlende PHP $_POST-Werte aus php://input

Obwohl Formulardaten über eine POST-Anfrage empfangen wurden, werden bestimmte Werte nicht angezeigt das PHP-Array $_POST. Beim Debuggen wird das Vorhandensein dieser Werte in der rohen Anforderungszeichenfolge angezeigt, die über php://input abgerufen wurde.

Ursache:

PHP ändert Feldnamen, die bestimmte Zeichen enthalten (Leerzeichen, Punkte, offene eckige Klammern usw.), um den veralteten register_globals zu entsprechen.

Lösung:

  • register_globals deaktivieren: Seitdem Einstellung veraltet ist, deaktivieren Sie sie in der Konfigurationsdatei php.ini.
  • Verwenden Sie eine Workaround-Funktion: Verwenden Sie eine Funktion, die die rohe Anforderungszeichenfolge analysiert, die Werte extrahiert und dekodiert, um eine neue zu erstellen $vars-Array, das die fehlenden Werte enthält. Hier ist ein Beispiel:
<code class="php">function getRealPOST() {
    $pairs = explode("&", file_get_contents("php://input"));
    $vars = array();
    foreach ($pairs as $pair) {
        $nv = explode("=", $pair);
        $name = urldecode($nv[0]);
        $value = urldecode($nv[1]);
        $vars[$name] = $value;
    }
    return $vars;
}</code>

Das obige ist der detaillierte Inhalt vonWarum fehlen meine $_POST-Werte in meinem PHP-Skript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn