file_get_contents("php://input")
lub $HTTP_RAW_POST_DATA
- który z nich jest lepszy, aby uzyskać treść żądania JSON?
I jakiego typu żądania ( GET
lub POST
) powinienem użyć do wysyłania danych JSON po stronie klienta XmlHTTPRequest
?
Moje pytanie zostało zainspirowane tą odpowiedzią: Jak wysłać JSON do PHP za pomocą curl
Cytuj z tej odpowiedzi:
Z punktu widzenia protokołu
file_get_contents("php://input")
jest to bardziej poprawne, ponieważ tak naprawdę nie przetwarzasz danych formularza wieloczęściowego http.
źródło
$HTTP_RAW_POST_DATA
jest uważany za przestarzały iphp://input
może być ponownie użyty.enable_post_data_reading
.Źródło: http://php.net/manual/en/wrappers.php.php .
źródło
$HTTP_RAW_POST_DATA
jest uważany za przestarzały iphp://input
może być ponownie użyty.file_get_contents (php: // input) - pobiera surowe dane POST i musisz ich użyć, gdy piszesz API i potrzebujesz XML / JSON / ... wejścia, którego nie można zdekodować do $ _POST przez PHP jakiś przykład:
wyślij pocztą Ciąg JSON
1.php
źródło
Powinny obowiązywać zwykłe zasady dotyczące sposobu wysyłania wniosku. Jeśli żądanie ma na celu pobranie informacji (np. Częściowy wynik wyszukiwania „podpowiedź” lub nowa strona do wyświetlenia itp.), Możesz użyć GET. Jeśli wysyłane dane są częścią prośby o zmianę (aktualizacja bazy danych, usunięcie rekordu itp.), Użyj POST.
Po stronie serwera nie ma powodu, aby używać surowych danych wejściowych, chyba że chcesz pobrać cały blok danych post / get za jednym razem. Możesz pobrać określone informacje, które chcesz, za pomocą tablic _GET / _POST, jak zwykle. Biblioteki AJAX, takie jak MooTools / jQuery, zajmą się trudną częścią wykonywania rzeczywistych wywołań AJAX i kodowania danych formularzy do odpowiednich formatów.
źródło
<input type="hidden" name="data" value="json data here" />
jest całkowicie akceptowalny i pozwala w trywialny sposób pobrać go po stronie serwera za pomocą $ _REQUEST ['data'].W przypadku danych JSON znacznie łatwiej jest POST jako typ zawartości „application / json”. Jeśli używasz GET, musisz zakodować URL JSON w parametrze i jest to trochę bałaganiarskie. Ponadto nie ma limitu rozmiaru podczas wykonywania POST. UZYSKAJ rozmiar, jeśli jest bardzo ograniczony (maksymalnie 4K).
źródło
php.ini
.Twoje drugie pytanie jest łatwe, GET ma ograniczenie rozmiaru do 1-2 kilobajtów zarówno po stronie serwera, jak i przeglądarki, więc wszelkiego rodzaju większe ilości danych, które musiałbyś wysłać przez POST.
źródło