Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn die vom PHP-Formular übermittelten Daten verloren gehen?

Was tun, wenn die vom PHP-Formular übermittelten Daten verloren gehen?

藏色散人
藏色散人Original
2020-07-11 10:52:423203Durchsuche

Lösung für PHP-Datenverlust: Überprüfen Sie zunächst die Integrität der Formularübermittlungsanforderung, prüfen Sie dann, ob die Anforderungsdaten das PHP- oder Nginx-Limit überschreiten, und rufen Sie dann die ursprüngliche Anforderung direkt über „file_get_contents('php“ ab; input')" Daten; zuletzt geänderte max_input_var-Menge.

Was tun, wenn die vom PHP-Formular übermittelten Daten verloren gehen?

Datenverlustproblem bei der Übermittlung von PHP-Formularen

Heute bin ich auf ein kleines Problem bei der Verarbeitung des Benutzer-Excel-Imports gestoßen

Die Anforderungen lauten wie folgt: Nachdem der Benutzer Excel importiert hat, verwendet er PHPExcel, um die importierten Daten zu lesen, ein Formular zu rendern, und der Benutzer überprüft das Formular, um die Integrität der importierten Daten zu bestätigen, und bestätigt schließlich die Eingabe in das Datenbank.

Was tun, wenn die vom PHP-Formular übermittelten Daten verloren gehen?

Da der Benutzer jedoch viele Daten in Excel importiert, sind nach dem Rendern des Formulars mehr als 6000 Eingaben erforderlich, und die Formularübermittlung (POST) erfolgt direkt verwendet, wodurch im Hintergrund nur ein kleiner Teil der vorherigen Daten gelesen werden kann.

Verfolgen

1. Überprüfen Sie die Integrität der Formularübermittlungsanforderung

Durch die Verfolgung der HTTP-Anfrage während der Übermittlung wird festgestellt, dass alle Daten vorhanden sind normal eingereicht.

2. Überprüfen Sie, ob die Anforderungsdaten das PHP- oder Nginx-Limit überschreiten.

Beim Betrachten der Inhaltslänge unter Anforderungsheadern wird festgestellt, dass sie nur 218558 B beträgt, was etwa 20 KB entspricht . Das ist definitiv nicht die Grenze.

3. Holen Sie sich die ursprünglichen Anforderungsdaten direkt über file_get_contents('php://input')

Da nur ein kleiner Teil der Daten direkt mit $_POST abgerufen werden kann, verwenden Sie PHP: // direkt. Beim Ausdrucken wird festgestellt, dass die durch diese Art des Sendens erhaltenen Daten vollständig sind.

4. Analysieren Sie die ursprünglichen Anforderungsparameter mit der Funktion parse_str

Wenn ich die ursprünglichen Eingabedaten mit parse_str analysiere

...
$origin = file_get_contents('php://input');
parse_str($origin, $result);
var_dump($result);

Ich habe eine Fehlermeldung erhalten

Warning: parse_str(): Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini

An diesem Punkt sollte ich verstehen, wo das Problem liegt.

5. Ändern Sie die Anzahl der max_input_var in php.ini

# 默认的 php.ini 配置
# How many GET/POST/COOKIE input variables may be accepted
# max_input_vars = 10000

Die Standardkonfiguration erlaubt nur eine maximale Anzahl von Eingaben für Anfragen (GET/POST/COOKIE).

Nachdem der Wert von max_input_var in php.ini entsprechend geändert wurde, ist das Problem gelöst.

Natürlich bestand die endgültige Lösung darin, Daten im JSON-Format über Ajax zu übermitteln. Schließlich ist das Ändern der Konfiguration von php.ini immer noch nicht ideal!

Ende

Da mir nicht aufgefallen ist, dass PHP diese Einschränkung hat, habe ich hier umgedreht

Weitere Informationen zu diesem Thema finden Sie auf der PHP-Website für Chinesisch !

Das obige ist der detaillierte Inhalt vonWas tun, wenn die vom PHP-Formular übermittelten Daten verloren gehen?. 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