PHP में POST अनुरोध कैसे भेजें: शुरुआती से पेशेवर तक
\n\nक्या आपने कभी ऐसी स्थिति का सामना किया है जहाँ आपके PHP स्क्रिप्ट को किसी दूसरे सर्वर से "बात" करनी हो? फॉर्म डेटा भेजना, बाहरी API को कॉल करना या बस यह जाँचना कि कोई दूरस्थ endpoint काम कर रहा है या नहीं? यदि हाँ, तो आपने निश्चित रूप से यह प्रश्न पूछा होगा: "How do I send a POST request with PHP?"। यह Stack Overflow पर सबसे लोकप्रिय प्रश्नों में से एक है, और यह कोई आश्चर्य की बात नहीं है - सर्वरों के बीच संपर्क आधुनिक वेब की नींव है।
\n\nइस लेख में, हम PHP में POST अनुरोध भेजने के चार सिद्ध तरीकों पर चर्चा करेंगे। आप सीखेंगे कि cURL, file_get_contents, stream_context_create और शक्तिशाली HTTP क्लाइंट Guzzle का उपयोग करके यह कैसे किया जाता है। हम केवल कोड नहीं दिखाएंगे - हम समझाएंगे कि आपके कार्य के लिए कौन सी विधि चुननी है और सामान्य गलतियों से कैसे बचना है।
\n\nचलिए शुरू करते हैं! 🚀
\n\nPOST अनुरोध क्या है और PHP में इसकी आवश्यकता क्यों है?
\n\nPOST, HTTP प्रोटोकॉल के तरीकों में से एक है, जो सर्वर पर डेटा भेजने के लिए डिज़ाइन किया गया है। GET के विपरीत, जहाँ पैरामीटर URL में "दिखाई" देते हैं, POST डेटा को अनुरोध के मुख्य भाग में भेजता है। यह तब सुविधाजनक होता है जब आपको:
\n\n- \n
- रजिस्ट्रेशन या ऑर्डर फॉर्म भेजना हो; \n
- REST API को कॉल करना हो (उदाहरण के लिए, CRM में एक नया रिकॉर्ड बनाना); \n
- दूरस्थ सर्वर पर फ़ाइल भेजनी हो; \n
- किसी तृतीय-पक्ष सेवा पर लॉगिन करना हो। \n
PHP में कोई अंतर्निहित फ़ंक्शन "sendPostRequest()" नहीं है, लेकिन कई लचीले उपकरण हैं जो इसे संभव बनाते हैं। आइए उनमें से प्रत्येक पर नज़र डालें।
\n\nविधि 1: cURL — सर्व-उपयोगी सैनिक
\n\ncURL (Client URL Library) PHP में HTTP अनुरोध भेजने का शायद सबसे लोकप्रिय तरीका है। यह कई प्रोटोकॉल का समर्थन करता है, SSL, कुकीज़, टाइमआउट और प्रॉक्सी के साथ काम कर सकता है। यदि आप किसी शैक्षिक स्क्रिप्ट से अधिक गंभीर चीज़ लिख रहे हैं - तो cURL पर ध्यान दें।
\n\ncURL के साथ सरल POST अनुरोध
\n\nयहाँ एक बुनियादी उदाहरण है जो JSONPlaceholder टेस्ट सर्वर पर POST अनुरोध भेजता है और प्रतिक्रिया प्रदर्शित करता है:
\n\n// 1. एक नया cURL संसाधन बनाएँ\n$ch = curl_init();\n\n// 2. endpoint URL निर्दिष्ट करें\ncurl_setopt($ch, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts");\n\n// 3. बताएँ कि यह POST अनुरोध है\ncurl_setopt($ch, CURLOPT_POST, 1);\n\n// 4. डेटा भेजें (PHP ऐरे स्वचालित रूप से क्वेरी स्ट्रिंग में परिवर्तित हो जाता है)\ncurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([\n 'title' => 'मेरा पहला पोस्ट',\n 'body' => 'यह पोस्ट का मुख्य भाग है',\n 'userId' => 1\n]));\n\n// 5. परिणाम लौटाएँ, सीधे प्रदर्शित न करें\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n// 6. अनुरोध निष्पादित करें\n$response = curl_exec($ch);\n\n// 7. त्रुटियों की जाँच करें\nif (curl_errno($ch)) {\n echo 'cURL त्रुटि: ' . curl_error($ch);\n} else {\n // 8. कनेक्शन बंद करें\n curl_close($ch);\n // 9. परिणाम प्रदर्शित करें\n echo $response;\n}\n\nJSON और हेडर के साथ POST
\n\nआधुनिक API अक्सर JSON के साथ काम करते हैं। यहाँ बताया गया है कि JSON डेटा कैसे भेजें और सही Content-Type हेडर कैसे सेट करें:
\n\n$data = [\n 'email' => 'user@example.com',\n 'password' => 'secret123'\n];\n\n$ch = curl_init('https://api.example.com/login');\ncurl_setopt($ch, CURLOPT_POST, 1);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n 'Content-Type: application/json',\n 'Accept: application/json'\n]);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // प्रतिक्रिया का HTTP कोड प्राप्त करें\n\ncurl_close($ch);\n\nif ($httpCode === 200) {\n $result = json_decode($response, true);\n print_r($result);\n} else {\n echo "त्रुटि: HTTP $httpCode";\n}\n\ncURL क्यों? यह पूर्ण नियंत्रण देता है: आप टाइमआउट (CURLOPT_TIMEOUT) सेट कर सकते हैं, रीडायरेक्ट का अनुसरण कर सकते हैं (CURLOPT_FOLLOWLOCATION), फ़ाइल (CURLFile) भेज सकते हैं और FTP के साथ भी काम कर सकते हैं। एकमात्र नकारात्मक पक्ष यह है कि कोड काफी लंबा हो जाता है।
\n\n