In diesem Artikel werden hauptsächlich detaillierte Beispiele für den Posteingang von Rohdaten in PHP vorgestellt. Ich hoffe, dass er allen helfen kann.
Normalerweise verwenden Benutzer Browser-Webformulare, um Daten an den Server zu senden. Wir verwenden PHP, um die Daten, die Benutzer an den Server senden, zu empfangen und entsprechend zu verarbeiten. Aber in einigen Fällen, wenn der Benutzer Client-Software verwendet, um Postdaten an das PHP-Programm des Servers zu senden, und diese nicht mit $_POST identifizieren kann, wie sollte damit umgegangen werden?
$_POST-Methode zum Empfangen von Daten
$_POST-Methode ist ein Array von Variablen, die über die HTTP-POST-Methode übergeben werden, bei der es sich um eine automatische globale Methode handelt Variable. Wenn Sie beispielsweise $_POST['name'] verwenden, können Sie von Webformularen und Webseiten gepostete Daten asynchron empfangen. Das heißt, $_POST kann nur Daten empfangen, die mit dem Dokumenttyp Content-Type: application/x-www übermittelt wurden -form-urlencoded.
$GLOBALS['HTTP_RAW_POST_DATA']-Methode zum Empfangen von Daten
Wenn es sich bei den per Post gesendeten Daten nicht um einen Dokumenttyp handelt, den PHP erkennen kann, z. B text/xml Oder Soap usw., wir können $GLOBALS['HTTP_RAW_POST_DATA'] zum Empfangen verwenden. Die Variable $HTTP_RAW_POST_DATA enthält die POST-Rohdaten. Diese Variable wird nur generiert, wenn Daten unbekannter MIME-Typen gefunden werden. $HTTP_RAW_POST_DATA ist für enctype="multipart/form-data"-Formulardaten nicht verfügbar. Mit anderen Worten: Die Verwendung von $HTTP_RAW_POST_DATA kann keine von Webformularen geposteten Daten empfangen.
Daten über php://input empfangen
Wenn der bessere Weg, auf die ursprünglichen POST-Daten zuzugreifen, php://input ist. php://input ermöglicht das Lesen der Rohdaten eines POST. Es belastet den Speicher weniger als $HTTP_RAW_POST_DATA und erfordert keine speziellen php.ini-Einstellungen, während php://input nicht mit enctype="multipart/form-data" verwendet werden kann.
Der Benutzer verwendet beispielsweise eine Clientanwendung, um eine Datei auf dem Server zu veröffentlichen. Der Inhalt der Datei ist uns egal, wir möchten die Datei jedoch vollständig auf dem Server speichern. Wir können den folgenden Code verwenden:
$input = file_get_contents('php://input'); file_put_contents($original, $input); //$original为服务器上的文件
Der obige Code verwendet file_get_contents('php://input'), um Beitragsdaten zu empfangen, und schreibt dann Die Daten werden in die $original-Datei geschrieben. Tatsächlich kann es als Hochladen einer Datei vom Client auf den Server verstanden werden. Es gibt viele solcher Anwendungen, insbesondere wenn unsere PHP-Entwicklung Produkte mit C, C++ und anderen Anwendungsentwicklungen gemeinsam entwickeln muss .
Verwandte Empfehlungen:
php löst das Problem des Verlusts beim Posten großer Datenmengen
Analyse der Curl-Get-Post-Anfrage in PHP
So behandeln Sie Ausnahmen, die angezeigt werden, wenn ein Beitrag Daten übermittelt
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Beispiels zum Empfangen von Rohdaten im PHP-Beitrag. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!