Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung und Beispielanalyse von PHP-Eingabe- und Ausgabeströmen

Ausführliche Erklärung und Beispielanalyse von PHP-Eingabe- und Ausgabeströmen

墨辰丷
墨辰丷Original
2018-06-01 14:46:041788Durchsuche

Dieser Artikel stellt hauptsächlich den PHP-Eingabe- und Ausgabestream vor. Hier haben wir relevante Informationen und einfache Beispielcodes zusammengestellt.

Ich lerne kürzlich das http-Protokoll. Um das http-Protokoll besser zu verstehen, habe ich mir das http-Modul von nodejs angesehen! Ich habe das Gefühl, dass ich ziemlich viel gewonnen habe. Zum Beispiel verwende ich eine HTTP-Anfrage, um eine Anfrage zu senden:

var options = {
 host: 'localhost',
 port: 80,
 path: '/backbone/data.php',
 method: 'POST'
};


var req = http.request(options, function(res) {
 console.log('STATUS: ' + res.statusCode);
 console.log('HEADERS: ' + JSON.stringify(res.headers));
 res.setEncoding('utf8');
 res.on('data', function (chunk) {
  console.log('BODY: ' + chunk);
 });
});
// write data to request body
req.end('name=liuzhang&age=28');

Der obige Code bedeutet, Daten zu senden: „name=liuzhang&age=28“ und Der Rückruf ist das Antwortobjekt. Drucken Sie die vom Server geantworteten Daten aus!

data.php-Code ist

print_r($_POST);

Drucken Sie die übergebenen Daten aus! Das Ergebnis der Ausführung von

in der Befehlszeile ist

. Sie können sehen, dass das Array leer ist, das heißt, $_POST enthält zunächst keine Daten Ich dachte, die Daten wurden nicht übermittelt! Aber ich habe das Backend data.php in

echo file_get_contents("php://input");

receive Here geändert kommen die übermittelten Daten!

php://input ist ein schreibgeschützter Stream, der Zugriff auf die angeforderten Rohdaten bietet. Bei POST-Anfragen ist es besser, php://input anstelle von $HTTP_RAW_POST_DATA zu verwenden, da es nicht auf spezifischen php.ini-Anweisungen basiert. Außerdem wird in diesem Fall $HTTP_RAW_POST_DATA standardmäßig nicht aufgefüllt, was möglicherweise weniger Speicher erfordert als die Aktivierung von Always_populate_raw_post_data. Wenn enctype="multipart/form-data" verwendet wird, ist php://input ungültig.

$_POST kann nur abgerufen werden, wenn die Daten gemäß dem Typ application/x-www-form-urlencoded übermittelt werden. Das enctype-Attribut von form ist die Codierungsmethode. Es gibt zwei häufig verwendete Methoden -www-form-urlencoded und multipart/form-data, der Standardwert ist application/x-www-form-urlencoded. Wenn die Aktion get ist, verwendet der Browser die Kodierungsmethode x-www-form-urlencoded, um die Formulardaten in eine Zeichenfolge (Name1=Wert1&Name2=Wert2...) zu konvertieren, und hängt die Zeichenfolge dann an das Ende der URL an teilt es mit ? , lädt diese neue URL. Wenn die Aktion „Post“ ist, kapselt der Browser die Formulardaten in den http-Body und sendet sie dann an den Server.

Wenn wir die Sendeoptionen in

var options = {
 host: 'localhost',
 port: 80,
 path: '/backbone/data.php',
 method: 'POST',
 headers : {'Content-Type': 'application/x-www-form-urlencoded'}
};

ändern und einen Header-Inhaltstyp hinzufügen, können wir $_POST verwenden, um Daten zu empfangen! Wenn es sich nicht um diesen Formulartyp handelt, können Sie die Roheingabe zum Empfangen von Daten verwenden!

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

phpDetaillierte Erklärung zum Datei-Upload

phpWeChat öffentliches Konto js-sdk-Entwicklungsanwendung

phpDetaillierte Erläuterung der Interaktion und Schnittstelle der öffentlichen WeChat-Plattform

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung und Beispielanalyse von PHP-Eingabe- und Ausgabeströmen. 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