Nasıl vücut almak için php bir POST?
Ben bir php sayfasına aşağıdaki YAZI gönderin
{a:1}
Bu isteğinin gövdesi (YAZI isteği).
Php, ben de böyle bir değer elde ne var?
var_dump($_POST);
çözüm, işçi değil.
CEVAP
Bir yazının varlık gövdesini erişim veya isteği (veya başka bir HTTP yöntemi) KOYMAK için:
$entityBody = file_get_contents('php://input');
Ayrıca, STDIN
sürekli alternatif olarak yapabilirsin yani 9**, zaten açık bir akış
$entityBody = stream_get_contents(STDIN);
PHP manual entry on I/O streamsdocs:
://giriş phpham veri okuma sağlayan salt okunur bir akış. istek bedenden. POST istekleri halinde tercih edilir kullanmak için://giriş php
$HTTP_RAW_POST_DATA
yerine değil özel php bağlıdır.ını direktifleri. Ayrıca, bu durum için nereye$HTTP_RAW_POST_DATA
varsayılan olarak doldurulur, bu bir potansiyel olarak değil daha az yoğun bellek alternatif etkinleştirme always_populate_raw_post_data.://giriş phpmevcut değildir. şifre türü="çok parçalı/-veri formu".
Özellikle dikkat etmek isteyeceksiniz php://input
akışı, bir web SAPI erişmek nasıl olursa olsun,değil aranabilir. Bu sadece bir kez okunabilir anlamına gelir. Eğer büyük HTTP varlık organları rutin karşıya olduğu bir ortamda çalışıyorsanız stream haliyle giriş (yerine ilk örnek gibi yukarıda arabelleği) korumak isteyebilirsiniz.
Bu gibi stream kaynak bir şey korumak için yararlı olabilir:
<?php
function detectRequestBody() {
$rawInput = fopen('php://input', 'r');
$tempStream = fopen('php://temp', 'r ');
stream_copy_to_stream($rawInput, $tempStream);
rewind($tempStream);
return $tempStream;
}
php://temp
veri belirli bir miktar (varsayılan 2) depolanır sonra şeffaf dosya sistemi depolama anahtarı olacak, çünkü bellek tüketimini yönetmenize izin verir. Bu boyut php manipüle edilebilir.dosya veya NN
en fazla miktarda veri bellekte tutmak için bir geçici dosya kullanmadan önce nerede /maxmemory:NN
, bayt cinsinden ekleyerek ını.
Giriş akışı üzerinde arayanlar için gerçekten iyi bir nedeniniz yoksa elbette, bir web uygulama bu işlevselliği gerekmez. HTTP isteği varlık vücut sonra genellikle yeterli -- okuma uygulaması ne rakamlar ise müşterileri bekliyor bütün gün devam yok.
://Giriş php unutmayın istekleri Content-Type: multipart/form-data
başlıkenctype="multipart/form-data"
HTML formları) belirtmek için kullanılabilir değil. Bu PHP zaten $_POST
superglobal içine form verilerini ayrıştırılmış sahip olur.
Nasıl cross-origin resource sharing (C...
nasıl ALMAK ve JQuery ile POST değişke...
Nasıl vücut'in içeriğini almak iç...
Nasıl Python ile şimdiki zaman almak i...
Nasıl bir liste boyutunu almak için...