2014-09-03 5 views
5

अन्य लोगों ने पहले से ही यह पूछ लिया है कि इसे पर्ल, जावा, बैश इत्यादि से कैसे किया जाए, लेकिन मुझे इसे PHP में करने की ज़रूरत है, और मुझे विशेष रूप से (या इसके उत्तर के साथ) से संबंधित किसी भी प्रश्न को पहले से ही नहीं पूछा गया है।मैं PHP में जीईटी और पोस्ट पैरामीटर दोनों के साथ curl के साथ अनुरोध कैसे कर सकता हूं?

मेरे कोड:

$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); 

यह काम नहीं करता। गंतव्य साइट पर print_r($_GET); print_r($_POST); है, इसलिए जब मैं $result की जांच करता हूं तो मुझे भेजे गए फ़ील्ड देखने में सक्षम होना चाहिए। हालांकि, $ _POST सरणी खाली है - मैं केवल चर प्राप्त करता हूं। अगर मैं $ url से ?... क्वेरी स्ट्रिंग को हटा देता हूं, तो POST सरणी सही ढंग से आबादी में आती है। लेकिन अब मेरे पास जीईटी पैरा नहीं है। मैं यह कैसे करु?

मेरा विशिष्ट मामला है, मुझे क्वेरी स्ट्रिंग में फिट करने के लिए बहुत अधिक डेटा भेजने की आवश्यकता है, लेकिन मैं इसे सभी पोस्ट के रूप में नहीं भेज सकता क्योंकि साइट जिसे मैं सबमिट करना चाहता हूं, पोस्ट किए गए डेटा के लिए हैंडलर चुन रहा है जीईटी स्ट्रिंग में एक चर के आधार पर। मैं कोशिश कर सकता हूं और बदल सकता हूं, लेकिन आदर्श रूप में मैं एक ही प्रश्न में डेटा प्राप्त करने और पोस्ट करने में सक्षम होना चाहता हूं।

+0

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

+1

आप एक ही समय में एक पोस्ट और एक जीईटी नहीं कर सकते हैं, तो आप अपने यूआरएल में कुछ क्वेरीस्ट्रिंग पैरा जोड़ सकते हैं, लेकिन पोस्ट जोड़ने के लिए वर्र्स, आपको एक पोस्ट करना है। – randomizer

+0

@ParagTyagi हां, यह एक बहुत अच्छा बुनियादी ट्यूटोरियल है, लेकिन यह मेरे प्रश्न का समाधान नहीं करता है - मैं एक ही समय में जीईटी और पोस्ट * कैसे भेजूं? – Benubird

उत्तर

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')); 

पीएचपी ही अगर एक पोस्ट किया जाता है GET पैरामीटर की उपेक्षा करने का फैसला नहीं होगा। पृष्ठ को लोड करने के लिए किस प्रकार के http क्रिया का उपयोग किया गया था, इस पर ध्यान दिए बिना यह $ _GET पॉप्युलेट करेगा - यदि URL में क्वेरी पैरामीटर हैं, तो वे $ _GET में जाएंगे।

यदि आपको $ _POST और $ _GET नहीं मिल रहा है, तो कुछ रीडायरेक्ट या अन्यथा कुछ मार रहा है। जैसे क्या आप यह देखने के लिए $_SERVER['REQUEST_METHOD'] देख रहे हैं कि आपका कोड वास्तव में POST के रूप में चल रहा है या नहीं? यदि कोई पोस्ट वास्तव में नहीं किया गया था तो PHP $ _POST को पॉप्युलेट नहीं करेगा। आपने सर्वर पर एक पोस्ट भेज दी हो सकती है, लेकिन इसका मतलब यह नहीं है कि आपका कोड वास्तव में POST शासन के तहत निष्पादित किया जाएगा - उदा। एक mod_rewrite पुनर्निर्देशन।

चूंकि आपके पास FOLLOW_REDIRECT चालू है, इसलिए आप बस यह स्वीकार कर रहे हैं कि आपका कोड निष्पादित होने पर आपको वास्तव में एक पोस्ट मिल रही है।

+0

मैं यही कर रहा हूं, लेकिन यह * काम नहीं करता *! क्या मैं कुछ भूल रहा हूँ? क्या मुझे कुछ विशेष php.ini सेटिंग चाहिए? – Benubird

+0

@ बेनबर्ड नहीं, कोई विशेष सेटिंग नहीं है। इस तरह यह काम करता है, और यदि यह आपके लिए काम नहीं कर रहा है तो आपको अपना वास्तविक कोड पोस्ट करना चाहिए। अपने कोड में कहीं भी आप अपना यूआरएल दिखाते हैं। यह निश्चित रूप से काम करता है, इसलिए आपका यूआरएल गलत होना चाहिए। – Brad

+0

@ ब्रैड यह मेरा यूआरएल है: 'https: //ec2-54-225-37-120.compute-1.amazonaws.com/wordpress/? Wc-api = paddle_wc_payment_gateway' – Benubird

3

मुझे नहीं पता कि आपके पास पहले से ही हो सकता है लेकिन क्या आपके $ url के पास वांछित पैरामीटर हैं? जैसा:

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

हां, ऐसा करता है - जैसा कि मैंने सवाल में कहा था, मैं या तो पोस्ट फ़ील्ड या फ़ील्ड प्राप्त कर सकता हूं, लेकिन दोनों नहीं। – Benubird

+0

यह सवाल का जवाब नहीं देता है। – randomizer

+0

@randomizer यह कैसे नहीं करता है? – Brad

संबंधित मुद्दे