Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn PHP Post keine Daten empfangen kann?

Was soll ich tun, wenn PHP Post keine Daten empfangen kann?

藏色散人
藏色散人Original
2021-10-15 10:05:185726Durchsuche

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']“.

Was soll ich tun, wenn PHP Post keine Daten empfangen kann?

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;
Wenn Undefinierter Index: HTTP_RAW_POST_DATA angezeigt wird, ändern Sie einfach den Code wie folgt.

$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!

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