file_get_contents ("php :/ / input") veya $ HTTP_RAW_POST_DATA, bir JSON istek vücut almak daha iyidir?

5 Cevap php

And from the client side, which request type (GET or POST) is better to use, to send JSON data if I use XmlHTTPRequest? My application uses this stream of data for either retrieve data form database and execute some functionality in PHP.

EDIT:

My question was inspired from this answer: How to post JSON to PHP with curl

O diyor ki:

Eğer gerçekten zaten http Çoklu form verilerini işlemek değil çünkü bir protokol perspektif file_get_contents dan ("php :/ / input"), aslında daha doğru.

5 Cevap

Aslında php://input ham POST veri okumak için izin verir.

It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives.

php://input enctype="multipart/form-data" ile mevcut değildir.

Reference: http://php.net/manual/en/wrappers.php.php

Her zamanki kurallar isteği göndermek nasıl başvurmalıdır. Istek bilgi almak için ise (örn. kısmi arama 'ipucu' sonuç, ya da görüntülenecek yeni bir sayfa ..) GET kullanabilirsiniz. Gönderilen veri (bir veritabanını güncellemek bir kaydı silme, vb.) Daha sonra POST kullanmak bir şey değiştirmek için bir istek parçası ise.

Eğer tek bir seferde tüm yazı / almak veri bloğu kapmak istediğiniz sürece sunucu tarafı, ham girişini kullanmak için hiçbir neden yok. Sen her zamanki gibi _GET / _POST diziler üzerinden istediğiniz belirli bilgileri alabilirsiniz. Böyle mooTools / jQuery gibi AJAX kütüphaneleri sizin için uygun biçimleri içine gerçek AJAX çağrıları ve kodlama form verilerini yapmanın zor kısmı idare edecek.

JSON verileri için, "application / json" içerik-türü olarak POST çok daha kolay. GET kullanıyorsanız, URL-kodlamak bir parametrede JSON var ve bu tür dağınık. POST yaptığınızda Ayrıca, boyut sınırı yoktur. Çok (en 4K) sınırlı olmadığını boyutunu GET.

php :/ / input istek gövdesinde ham veri okumanızı sağlayan bir read-only akışıdır. POST istekleri durumunda, it does not depend on special php.ini directives şeklinde $ yerine HTTP_RAW_POST_DATA of php :/ / girişini kullanmak için tercih edilir. Ayrıca, varsayılan olarak değil doldurulur $ HTTP_RAW_POST_DATA durumlarda için, bu always_populate_raw_post_data aktive bir potansiyel olarak daha az bellek yoğun bir alternatiftir.

Kaynak: http://php.net/manual/en/wrappers.php.php.

Umut olur. :)

Ben senin başlık soru (bir JSON isteği ile ne demek istiyorsun? JSON getirmesi isteği) anlamıyorum?

ancak ikinci soru kolaydır, GET sunucu ve tarayıcı tarafında hem de 1-2 kilobayt bir boyutu sınırlaması, yani POST aracılığıyla göndermek zorunda kalacak daha büyük miktarda veri her türlü vardır.