Heim > php教程 > PHP开发 > Verwendungsdetails des CURLOPT_POSTFIELDS-Parameters von CURL in PHP

Verwendungsdetails des CURLOPT_POSTFIELDS-Parameters von CURL in PHP

高洛峰
Freigeben: 2016-12-23 15:18:35
Original
1259 Leute haben es durchsucht

Wenn wir unter normalen Umständen CURL zum Übermitteln von POST-Daten verwenden, sind wir es gewohnt, sie so zu schreiben:

curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);
Nach dem Login kopieren

Aber diese Schreibmethode ist manchmal nicht sehr nützlich, vielleicht erhalten Sie 500 Vom Server zurückgegebener Fehler. Wenn wir jedoch versuchen, Daten über Socket an den Server zu senden, erhalten wir sehr korrekte Ergebnisse.
Zum Beispiel haben wir die folgende PHP-Datei auf dem Server:

<?php print_r($_SERVER);?>
Nach dem Login kopieren

Wenn wir CURL verwenden, um einige Daten an den Server zu senden, ohne auf Details zu achten, erhalten wir möglicherweise die folgenden Ergebnisse: Nicht unser ideales Ergebnis:

[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122
Nach dem Login kopieren

Aber wenn wir http_build_query($post_data) anstelle von $post_data verwenden und dann Daten an dieses PHP-Skript senden, erhalten wir andere Ergebnisse als oben. Dies ist unser ideales Ergebnis :

[CONTENT_TYPE] => application/x-www-form-urlencoded
Nach dem Login kopieren

Aus dem obigen Beispiel ist nicht schwer zu erkennen, dass bei Verwendung von CURL und dem Parameter Daten beim Senden von Daten an den Server der HTTP-Header Content_type: application/ x-www- sendet. formular-urlencodiert. Dies ist der Header, der vom Browser gesendet wird, wenn das Formular auf einer normalen Webseite gesendet wird . Und wir wissen, dass es sich bei Multipart/Formulardaten um das Formular handelt, das zum Hochladen von Dateien verwendet wird. Durch das Einfügen des Grenztrennzeichens werden viele Bytes hinzugefügt.
Das offizielle Handbuch sagt Folgendes:

The full data to post in a HTTP “POST” operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like ‘para1=val1¶2=val2&…&#39; or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.
Nach dem Login kopieren

Bei der Verwendung eines Arrays zur Bereitstellung von Beitragsdaten muss die CURL-Komponente wahrscheinlich mit der @filename-Schreibmethode zum Hochladen von Dateien kompatibel sein. Standardmäßig ist der content_type ist auf multipart/form-data eingestellt. Obwohl es auf die meisten Server keine Auswirkungen hat, gibt es immer noch eine kleine Anzahl von Servern, die nicht kompatibel sind.
Nach einer kurzen Zusammenfassung kamen wir schließlich zu dem Schluss: Wenn keine Notwendigkeit zum Hochladen von Dateien besteht, versuchen Sie, eine http_build_query-Verarbeitung für die per Post übermittelten Daten durchzuführen und diese dann zu versenden, um eine bessere Kompatibilität und kleinere Anforderungen zu erzielen Datenpakete.


Weitere Informationen zur Verwendung der CURLOPT_POSTFIELDS-Parameter von CURL in PHP finden Sie auf der chinesischen PHP-Website!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage