طلبات POST في PHP باستخدام cURL: دليل 2025

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

PHP و cURL و HTTP POST: كيفية إرسال البيانات كمحترف في 2025

\n\n

إذا سبق لك كتابة كود PHP يحتاج إلى "التحدث" مع خادم آخر — إرسال نموذج، استدعاء API، أو مجرد نقل بيانات — فمن المحتمل أنك واجهت cURL. إنها ليست مجرد مكتبة، بل هي سكين سويسري لطلبات HTTP. وعلى الرغم من وجود أدوات أكثر حداثة في 2025 مثل Guzzle أو Symfony HttpClient، إلا أن cURL تظل الأساس الذي يجب أن يعرفه كل مطور PHP.

\n\n

سؤال "PHP, cURL, and HTTP POST example?" على Stack Overflow حصد آلاف المشاهدات. لماذا؟ لأنها المهمة التي تظهر في كل مشروع ثانٍ: من التكامل مع أنظمة الدفع إلى إرسال البيانات إلى CRM. دعنا نفهم كيف نفعل ذلك بشكل صحيح وآمن وجميل.

\n\n

ما هو cURL ولماذا هو مطلوب في PHP؟

\n\n

cURL (Client URL) هي مكتبة قوية تسمح لسكريبت PHP الخاص بك بالعمل كعميل HTTP. تخيل أن الكود الخاص بك هو متصفح بدون واجهة. يمكنه فتح الصفحات، إرسال النماذج، تنزيل الملفات، وحتى العمل مع الكوكيز.

\n\n

في 2025، تظل cURL ذات صلة لأن:

\n
    \n
  • مدمجة في PHP (لا حاجة لتثبيت حزم إضافية)
  • \n
  • تعمل بشكل أسرع من بعض المكتبات "الثقيلة"
  • \n
  • تمنح تحكمًا كاملاً في كل جانب من جوانب الطلب
  • \n
  • تدعم جميع البروتوكولات الحديثة: HTTP/2، HTTPS، FTP وحتى IMAP
  • \n
\n\n

مثال أساسي: إرسال طلب POST باستخدام cURL

\n\n

لنبدأ بالكلاسيكيات. إليك الحد الأدنى من الكود العملي الذي يرسل طلب POST إلى الخادم:

\n\n
<?php\n// الرابط الذي نرسل إليه البيانات\n$url = 'https://api.example.com/submit';\n\n// البيانات المراد إرسالها (مصفوفة ترابطية)\n$postData = [\n    'name' => 'إيفان بيتروف',\n    'email' => 'ivan@example.com',\n    'message' => 'مرحبًا من 2025!'\n];\n\n// تهيئة cURL\n$ch = curl_init($url);\n\n// إعدادات الطلب\ncurl_setopt_array($ch, [\n    CURLOPT_POST => true,                          // هذا طلب POST\n    CURLOPT_POSTFIELDS => http_build_query($postData), // البيانات بتنسيق سلسلة\n    CURLOPT_RETURNTRANSFER => true,                // إرجاع الرد كسلسلة\n    CURLOPT_HEADER => false,                       // عدم إرجاع الرؤوس\n    CURLOPT_TIMEOUT => 30,                         // مهلة 30 ثانية\n    CURLOPT_SSL_VERIFYPEER => true,                // التحقق من شهادة SSL\n]);\n\n// تنفيذ الطلب\n$response = curl_exec($ch);\n\n// التحقق من الأخطاء\nif (curl_errno($ch)) {\n    echo 'خطأ cURL: ' . curl_error($ch);\n} else {\n    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n    echo "رمز استجابة HTTP: $httpCode\\n";\n    echo "محتوى الرد: $response";\n}\n\n// إغلاق الاتصال\ncurl_close($ch);\n?>
\n\n

لاحظ استخدام http_build_query(). هذه دالة مفيدة تحول المصفوفة إلى سلسلة مشفرة بعنوان URL. بدونها، قد يعالج cURL البيانات بشكل غير صحيح.

\n\n

إرسال JSON بدلاً من النموذج

\n\n

في 2025، تعمل معظم APIs مع JSON بدلاً من نماذج POST التقليدية. إليك كيفية تكييف مثالنا:

\n\n
<?php\n$url = 'https://api.example.com/v2/users';\n$jsonData = json_encode([\n    'username' => 'developer_2025',\n    'password' => 'secret_password',\n    'role' => 'admin'\n]);\n\n$ch = curl_init($url);\ncurl_setopt_array($ch, [\n    CURLOPT_POST => true,\n    CURLOPT_POSTFIELDS => $jsonData,  // إرسال JSON خام\n    CURLOPT_HTTPHEADER => [           // مهم: تحديد الرؤوس\n        'Content-Type: application/json',\n        'Content-Length: ' . strlen($jsonData),\n        'Accept: application/json'\n    ],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 15,\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\nif ($htt                

المدونات

توصيات الكتب