2014-09-03 20 views
5

Diğer insanlar zaten bunun nasıl yapılacağını perl, java, bash, vs.'den istemişlerdi, fakat bunu PHP'de yapmalıyım ve PHP'nin özellikle (veya cevaplarını) ile ilgili olarak sorduğum soruları göremiyorum.PHP'de CURL ile hem GET hem de POST parametreleriyle nasıl istekte bulunabilirim?

Kodum:

$ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch); 

Bu işe yaramaz. Hedef site print_r($_GET); print_r($_POST);, $result'u incelediğimde, gönderilmekte olan alanları görebilmem gerekir. Ancak, $ _POST dizisi boş - Yalnızca get değişkenlerini görüyorum. ?... sorgu dizesini $ url'den kaldırırsam POST dizisi doğru şekilde doldurulur. Ama şimdi GET param yok. Bunu nasıl yaparım?

Özel durumum, sorgu dizesine sığdırmak için çok fazla veri göndermem gerekiyor, ancak göndermek istediğim site gönderilen veriler için bir işleyici seçtiğinden POST olarak gönderemiyorum. GET dizesindeki bir değişkeni temel alır. Bunu değiştirip deneyebilirim, ancak ideal olarak hem sorgulama hem de veriyi aynı sorguya gönderebilmek istiyorum.

+0

http://hayageek.com/php-curl-post-get/ –

+1

Aynı anda bir POST ve bir GET gerçekleştiremezsiniz, ancak URL'nize bazı querystring paramları ekleyebilirsiniz, ancak POST eklemek için var, bir POST yapmak zorunda. – randomizer

+0

@ParagTyagi Evet, bu çok güzel bir temel öğretici, ama bu soruya cevap vermiyor - GET ve POST * 'ı aynı anda nasıl gönderebilirim *? – Benubird

cevap

9
# GET query goes in the URL you're hitting 
$ch = curl_init('http://example.com/script.php?query=parameter'); 
# POST fields go here. 
curl_setopt($ch, CURLOPT_POSTFIELDS, array('post' => 'parameter', 'values' => 'go here')); 

PHP kendisi bir POST gerçekleştirilir GET parametrelerini göz ardı etmeye karar olmaz. Sayfayı yüklemek için ne tür bir fiil kullanıldığına bakılmaksızın $ _GET doldurulur. URL'de sorgu parametreleri varsa, $ _GET'e girerler.

Bu konuda $ _POST ve $ _GET almıyorsanız, bir şey yönlendirmeye veya başka bir şekilde bir şeye neden oluyordur. Örneğin. Kodunuzun aslında bir POST olarak çalışıp çalışmadığını görmek için $_SERVER['REQUEST_METHOD']'u kontrol ettiniz mi? Bir yayın gerçekten yapılmadıysa PHP $ _POST'u doldurmaz. Sunucuya bir gönderi göndermiş olabilirsiniz, ancak bu kodunuzun aslında bir POST rejimi altında yürütüleceği anlamına gelmez - ör. bir mod_rewrite yönlendirmesi.

FOLLOW_REDIRECT açık olduğundan, kod yürütürken aslında bir gönderi alıyorsunuz demektir.

+0

Yaptığım şey bu, ama * çalışmıyor *! Bir şey mi eksik? İhtiyacım olan bazı özel php.ini ayarları var mı? – Benubird

+0

@Benubird Hayır, özel bir ayar yok. Bu şekilde çalışır ve eğer çalışmıyorsa, gerçek kodunuzu göndermelisiniz. Kodunuzun hiçbir yerinde URL’nizi göstermiyorsunuz. Kesinlikle çalışır, bu yüzden URL’niz yanlış olmalıdır. – Brad

+0

@Brad Bu benim URL'm: https: //ec2-54-225-37-120.compute-1.amazonaws.com/wordpress/? Wc-api = paddle_wc_payment_gateway' – Benubird

3

Bilmiyorum belki de zaten var ama $ url'iniz istenen parametrelere sahip mi? Gibi:

$url = "http://example.com/index.php?param1=value1&param2=value2"; 
+0

Evet, sanırım - sözde söylediğim gibi, posta alanlarını veya alanlarını görebiliyorum, ancak ikisini de göremiyorum. – Benubird

+0

Bu soruya cevap vermiyor. – randomizer

+0

@randomizer Nasıl değil? – Brad

İlgili konular