Lösungen für PHP-Posts, die keine Daten empfangen: 1. Ändern Sie max_input_vars in php.ini auf 5000; 2. Erhalten Sie Daten über „$GLOBALS['HTTP_RAW_POST_DATA']“.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
1: PHP kann mithilfe des POST-Problems einige Daten nicht abrufen
Ein mit PHP entwickeltes Projekt, Kundenfeedback während des Testphase Es hieß, dass die Daten nicht erfolgreich gespeichert wurden
Und mein vorheriger Test bestanden, aber das Problem trat laut Kundeninformationen erneut auf
Das Problem ist so
Der Kunde speichert über den Browser, aber einige Daten wurden gespeichert erfolgreich, aber einige Daten wurden nicht erfolgreich gespeichert
Und ich habe beim Testen herausgefunden, dass einige Daten in $_POST nicht vorhanden waren, einige jedoch vorhanden waren
Und file_get_contents("php://input"); kann auf diese Weise auch Holen Sie sich die Daten, aber weil Die Daten müssen verarbeitet werden und der Code muss stark geändert werden
Nachdem wir darüber nachgedacht haben, müssen wir immer noch das Problem von $_POST lösen
Ich war zunächst auch sehr verwirrt. Das Problem, auf das ich zuvor gestoßen bin, war, dass nicht alle $_POST abgerufen werden konnten, sondern nur Dies ist das erste Mal, dass ich einige Informationen erhalten kann
Da $_POST Daten senden kann, wird keiner der Daten vor der Übermittlung an den Hintergrund gesendet , oder der Hintergrund empfängt sie nicht
Und die Anfrage beim Anzeigen des Browsers hat kein Problem gefunden, alle Daten wurden normal gesendet
Dann bedeutet das, dass der Hintergrund sie nicht erhalten hat
Ich habe es gefunden Während meines Tests habe ich herausgefunden, dass ich die übermittelten Daten manuell gelöscht und dann erneut übermittelt habe
Das Backend $_POST kann alle Daten abrufen, und dann habe ich im Internet gesucht
und herausgefunden, dass die von $_POST übermittelten Daten eine Größenbeschränkung haben
Dann ändern Sie die max_input_vars in php.ini auf 5000, um das Problem perfekt zu lösen Der Typ ist Content-Type:application/x-www-form-urlencoded. Verwenden Sie $_POST, um die Daten abzurufen.
Wenn der Front-End-Anfragetyp Content-Type: application/json ist, können Daten nicht einfach mit $ abgerufen werden _POST. (Zum Beispiel Axios von vue.js, der Standardmodus ist application/json)
Zu diesem Zeitpunkt können Sie es über $GLOBALS['HTTP_RAW_POST_DATA'] abrufen und es dann mit json_decode in ein Objekt konvertieren lautet wie folgt$mypost = $GLOBALS['HTTP_RAW_POST_DATA']$postdata = json_decode($mypost);$username = $postdata->username;
$mypost = isset($GLOBALS['HTTP_RAW_POST_DATA'])?$GLOBALS['HTTP_RAW_POST_DATA']:file_get_contents("php://input");$postdata = json_decode($mypost);$username = $postdata->username;
Empfohlenes Lernen: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn PHP Post keine Daten empfangen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!