Beim Senden eines HTML-Formulars per POST-Anfrage wird erwartet, dass alle übermittelten Werte das Superglobal $_POST füllen. In einigen Fällen können jedoch bestimmte Werte fehlen.
Was verursacht die fehlenden Werte?
PHP ändert automatisch Werte, die bestimmte Zeichen enthalten (z. B. Leerzeichen, Punkt, offene eckige Klammer), um die Kompatibilität mit der veralteten Funktion „register_globals“ sicherzustellen. Diese Änderung kann dazu führen, dass Werte in $_POST weggelassen werden.
Lösung des Problems
Um dieses Problem zu beheben, können verschiedene Problemumgehungen eingesetzt werden. Eine beliebte Methode besteht darin, die rohen POST-Daten mit file_get_contents('php://input') zu lesen und sie manuell zu analysieren, um die fehlenden Werte zu extrahieren.
Unten finden Sie eine Beispielfunktion, die zum „Reparieren“ verwendet werden kann. die $_POST-Werte:
<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>
Durch die Verwendung dieser Funktion oder ähnlicher Problemumgehungen können Sie sicherstellen, dass alle übermittelten Werte korrekt analysiert werden und im $_POST-Array verfügbar sind.
Das obige ist der detaillierte Inhalt vonWarum fehlen in PHP einige $_POST-Werte und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!