file_get_contents("php://input")
oder $HTTP_RAW_POST_DATA
- welches ist besser, um den Text der JSON-Anfrage zu erhalten?
Und welchen Anfragetyp ( GET
oder POST
) sollte ich verwenden, um JSON-Daten zu senden, wenn ich die Clientseite verwende XmlHTTPRequest
?
Meine Frage wurde von dieser Antwort inspiriert: Wie poste ich JSON mit Curl auf PHP?
Zitat aus dieser Antwort:
Aus Protokollsicht
file_get_contents("php://input")
ist das eigentlich korrekter, da Sie ohnehin nicht wirklich mehrteilige http-Formulardaten verarbeiten.
quelle
$HTTP_RAW_POST_DATA
als veraltet undphp://input
kann wiederverwendet werden.enable_post_data_reading
.Quelle: http://php.net/manual/en/wrappers.php.php .
quelle
$HTTP_RAW_POST_DATA
als veraltet undphp://input
kann wiederverwendet werden.file_get_contents (php: // input) - Ruft die POST-Rohdaten ab. Sie müssen diese verwenden, wenn Sie APIs schreiben und XML / JSON / ... -Eingaben benötigen, die von PHP nicht in $ _POST dekodiert werden können. Ein Beispiel:
per Post senden JSON-String
1.php
quelle
Für das Senden der Anfrage sollten die üblichen Regeln gelten. Wenn die Anforderung darin besteht, Informationen abzurufen (z. B. ein Teil-Suchergebnis "Hinweis" oder eine neue Seite, die angezeigt werden soll usw.), können Sie GET verwenden. Wenn die gesendeten Daten Teil einer Aufforderung sind, etwas zu ändern (Datenbank aktualisieren, Datensatz löschen usw.), verwenden Sie POST.
Auf der Serverseite gibt es keinen Grund, die Roheingabe zu verwenden, es sei denn, Sie möchten den gesamten Post / Get-Datenblock auf einmal abrufen. Sie können die gewünschten spezifischen Informationen wie gewohnt über die Arrays _GET / _POST abrufen. AJAX-Bibliotheken wie MooTools / jQuery erledigen den schwierigen Teil der eigentlichen AJAX-Aufrufe und der Codierung von Formulardaten in geeignete Formate für Sie.
quelle
<input type="hidden" name="data" value="json data here" />
ist völlig akzeptabel und ermöglicht es Ihnen, es trivial serverseitig mit $ _REQUEST ['data'] abzurufen.Für JSON-Daten ist es viel einfacher, sie als Inhaltstyp "application / json" zu veröffentlichen. Wenn Sie GET verwenden, müssen Sie den JSON in einem Parameter URL-codieren, und es ist etwas chaotisch. Außerdem gibt es beim POST keine Größenbeschränkung. Die Größe von GET ist sehr begrenzt (höchstens 4 KB).
quelle
php.ini
.Ihre zweite Frage ist einfach: GET hat sowohl auf der Server- als auch auf der Browserseite eine Größenbeschränkung von 1 bis 2 Kilobyte, sodass Sie jede größere Datenmenge über POST senden müssen.
quelle