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!