اگر علاقه مند به همکاری در نت پارادیس جهت نویسندگی، ویراستاری و ترجمه مطالب هستی پس روی دکمه مقابل کلیک کن

علاقه به همکاری دارم

طراحی سایت, ساخت ربات تلگرام, آموزش php , سورس کد php ,سورس ربات تلگرام , سورس فروشگاه اینترنتی , آموزش طراحی وب

ارسال و دریافت jSON توسط cURL در php


ارسال و دریافت jSON توسط cURL در php

زمانی که با وب سرویس ها و APIها کار می کنید , ارسال و دریافت داده jSON از قابلیت های بسیار ضروری و کاربردی است. کتابخانه cURL ارسال داده jSON را بسیار آسان می کند . در این آموزش نحوه ارسال و دریافت jSON توسط cURL در php نشان می دهیم.

ارسال داده jSON با متد POST توسط cURL

مثال زیر یک درخواست HTTP POST ایجاد و داده جی سون را توسط curl ارسال می کند.

  • آدرسی را که قصد ارسال داده jSON را به آن دارید در $url مشخص کنید
  • درخواست curl را توسط curl_init() آغاز می کنیم.
  • داده ها را در یک آرایه مشخص و آن را توسط تابع json_encode() به یک رشته jSON تبدیل می کنیم.
  • داده های jSON را توسط CURLOPT_POSTFIELDS به فیلد های درخواست post اضافه کنیم
  • Content-Type راتوسط CURLOPT_HTTPHEADER ست می کنیم.
  • جواب برگشتی (Respose) را توسط CURLOPT_RETURNTRANSFER به صورت رشته تبدیل می کنیم.
  • در آخر , تابع curl_exec() برای اجرای درخواست POST فراخوانی میکنیم.

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

دریافت اطلاعات json توسط PHP

کد php زیر به شما نشان می دهد چطور اطلاعات json را دریافت کنیم. داده  jSON  را توسط json_decode() دیکد می کنیم . از تابع file_get_contents() هم برای دریافت اطلاعات به صورت خواندنی استفاده می کنیم

حتما بخوانید  ساخت REST API برای اندروید با php

کد php بالا برای کار با وب هوک ها در ساخت ربات تلگرام هم بسیار کاربردی است و با استفاده از استریم php://input مقادیری را که webhook به آدرس فایلی که مشخص کردیم ارسال می کند را دریافت می کنیم و به همین صورت داده های json را تجزیه و تحلیل و خروجی صحیح را برای کاربر فرستاده یا در دیتابیس ذخیره می کنیم .

کار کردن با داده های نوع json بسیار ساده است و امروزه بیشتر وب سرویس ها و سایت هایی که api رایگان در اختیار ما قرار می دهند همانند تلگرام و سایت های درگاه پرداخت واسط مثل زرین پال به جای XML از JSON استفاده می کنند .

پس بهتر است شما هم در پروژه هایی که می نویسید از آن بهره ببرید چون یکی از استاندارد های جالب و کاربردی در وب است .

هرگونه مشکلی در پیاده سازی کدها داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید

اگر مفید بود, لطفا به اشترک بگذارید تا دوستان دیگر نیز بهره ببرند

حسن شفیعی
مدرس ، پنتستر ، توسعه دهنده اپلیکیشن های تحت وب ، عضو مرکز حامی نخبگان و از مدیران و اعضای رسمی تیم امنیتی آشیانه هستم . علاقه خاصی به زبان های تحت وب, امنیت شبکه و لینوکس دارم و هر روز تلاش می کنم به این حوزه ها مسلط تر شوم و اطلاعاتم را در وب به اشتراک بگذارم

دیدگاه کاربران

21 پاسخ به “ارسال و دریافت jSON توسط cURL در php”

  1. مهدی گفت:

    با سلام ،
    آیا api های اینستاگرام مثل اینستاگرام می باشد؟

    1+
    • حسن شفیعی گفت:

      سلام
      api اینستاگرام کمی متفاوت از api های معمولی است چرا که نیاز است یک app بسازید و احراز هویت هایی داشته باشید که برای اینکار توصیه میکنم از کلاس https://github.com/cosenary/Instagram-PHP-API برای راحتی کار استفاده کنید و داکیومنت اینستاگرام رو هم مطالعه بفرمایید.
      موفق و پیروز باشید

      0
  2. حمیدرضا گفت:

    سلام
    فقط خواستم تشکر کنم بابت مطالب بروز سایتت.
    هرروز موفق‌تر از دیروز باشی.

    0
  3. حمیدرضا گفت:

    سلام حسن آقا
    من داخل هاست رایگان ربات تلگرام نصب کردم ولی چون تابع file_get_content بسته بود نتونستم از اون استفاده کنم و از استریم php://input نمی‌شد استفاده کرد و به جای اون از $_POST استفاده کردم ولی پردازش رشته دریافتی خیلی سخت میشه.
    لطفا اگر راه حلی دارید منو راهنمایی کنید.
    کدی که من نوشتم داخل لینک زیر قرار دادم.
    http://s8.picofile.com/file/8321367126/robot.php.html
    ممنون

    0
    • حسن شفیعی گفت:

      سلام .

      به جای file_get_contents از curl استفاده کنید


      function netparadis( $url ){
      $options = array(
      CURLOPT_RETURNTRANSFER => true, // return web page
      CURLOPT_HEADER => false, // don't return headers
      CURLOPT_FOLLOWLOCATION => true, // follow redirects
      CURLOPT_ENCODING => "", // handle all encodings
      CURLOPT_USERAGENT => "spider", // who am i
      CURLOPT_AUTOREFERER => true, // set referer on redirect
      CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
      CURLOPT_TIMEOUT => 120, // timeout on response
      CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
      );

      $ch = curl_init( $url );
      curl_setopt_array( $ch, $options );
      $content = curl_exec( $ch );
      curl_close( $ch );

      return $content;
      }

      همچنین به جای php://input از $HTTP_RAW_POST_DATA بهره ببرید .

      بهتره برای ربات خودتون از هاست های ارزان به جای رایگان استفاده کنید تا محدودیت های بالا رو نداشته باشید.

      موفق باشید.

      2+
      • حمیدرضا گفت:

        سلام حسن جان
        مثل اینکه HTTP_RAW_POST_DATA هم دپریکیت شده و در هاست رایگان parspack جواب نمیده.
        ممنون.

        0
        • حسن شفیعی گفت:

          سلام . این مورد مربوط به هاست نیست و ورژن php هستش که سعی کنید اگر دسترسی دارید بیاریدش روی ۵٫۳ تا کار بده .

          موفق باشید.

          0
  4. ممد گفت:

    سلام
    بنده با curl میخوام اطلاعات api تلگرامو تو سایتم چاپ کنم اینکارو انجام میدم چاپ میشه اما توسط نرم افزار من خونده نمیشه نمیدونم نوع چاپ شده اطلاعات فرق داره در صفحه؟
    نمونه در سایت تلگرام خروجیش رنگش فردق داره ببینید در عکس زیر
    http://uupload.ir/files/hzny_tele.png
    اما تو سایت من
    http://uupload.ir/files/r0qv_me.png

    چجوری چاپ کنم انقده اینورو اونورش کردم دیگه نشد ک نشد

    0
  5. پژواک گفت:

    سلام
    لطفا توضیح بدید که این کدها رو کدوم قسمت لاراول باید قرار داد؟

    0
    • حسن شفیعی گفت:

      سلام. شما باید متناسب با پروژه خود از این کدها استفاده کنید و اطلاعی از اینکه باید کجا استفاده کنید ندارم. بهتره ابتدا php را متوسط به بالا یاد بگیرید.
      موفق باشید.

      0
  6. فرهاد گفت:

    سلام و تشکر از بابت توضیحات بسیار ساده و روان
    یه سوال دارم من اطلاعات رو میفرستم به یک صفحهدیگه چطور اونجا اظلاعات رو برگردونم به همین کرل

    0
    • حسن شفیعی گفت:

      سلام. خوشحالیم که مفید واقع شده.

      شما بر اساس اطلاعات ارسالی به صفحه مورد نظر در خروجی چیزی رو دریافت می کنید که این اطلاعات برگشتی توسط $result = curl_exec($ch); دریافت میشه و میتونید استفاده کنید. (متغییر $result رو میتونید var_dump کنید.)

      موفق باشید.

      0
  7. فرهاد گفت:

    سلام ممنون از جوابتون نه سوالم اینه از اون صفحه که اطلاعات رو داریم میفرستیم بهش چور مشخص کنید که چه جوابی بفرسته

    0
    • حسن شفیعی گفت:

      سلام. خب کاملا بستگی به صفحه مورد نظر داره کاری که میخوایین انجام بدید داره. آیا صفحه مورد نظر رو خودتون کدنویسی کردید یا خیر . اگر بله که تماما به شما بستگی داره چه جور جوابی برگشت بدید.
      اگر خیر مثلا بعضی api ها شما میتونید مشخص کنید که نوع فرمت json رو برگشت بده یا xml و حالا جوابی که برگشت میده بسته به نوع داده شما و همچنین نوع عملیات و موفقیت آمیز بودن یا نبودن و … متفاوت است.

      در کل جواب بازگشتی رو اگر صفحه منبع رو کدنویسی کردید بستگی به شما داره که میتونه یه echo باشه یا هر چیزی و اگر از api‌استفاده می کنید بخش داکیومنت رو باید مطالعه کنید یا کد مثال رو بردارید.

      موفق باشید.

      0
  8. فرهاد گفت:

    ببخشید من نمیتونم منظرمو برسونم
    یه مثال بزنم
    من یه عدد میفرستم با کرل به یه صفحه بنام x حالا تو اون صفحه یسری اطلاعات رو که خیلی زیاده از دیتابیس میخونه و تبدیل به json میکنه حالا اونو چطور برگردونم به این صفحه ای که اول بودم
    ببخشید خیلی سوال پرسیدم

    0
    • حسن شفیعی گفت:

      خب تو پاسخ اول خدمتتون توضیح داده شده که شما اون داده که json شده رو echo می کنید همین
      echo json_encode($result);

      و بعد توی این صفحه شما تمام این اطلاعات برگشت داده شده رو داخل $result = curl_exec($ch); دارید و کافیه که var_dump کنید تا داده ها رو ببینید.

      موفق باشید.

      0
  9. فرهاد گفت:

    پس echo بشه هرچی تو این صفحه x هست رو برمیگردونه

    0
  10. فرهاد گفت:

    سلام جناب شفیعی
    ممنون از راهنمایی و زحماتتون
    یه سوال دارم در مورد ربات تلگرام ببخشید اینجا پرسیدم
    چطور میتونم messeage id متنی و رو که خود ربات میخواد بفرسته تو کانال یا گروه رو بدست بیارم
    خواستم با یه ربات دیگه بخونم که نشد پیام هم رو نمیخونن
    سپاس

    0
    • حسن شفیعی گفت:

      سلام. خواهش میکنم.
      پیامی که ارسال می کند خودش یک مقداری رو برگشت میده که از اون میتونید msg id رو در بیارید

      مثلا $result = sendmessage($userid,$text); که یک پیام رو ارسال می کنه نتیجه اون رو داخل $result برگشت و ذخیره میکنه که میتونید واکشی کنید و id رو بدست بیارید.

      موفق باشید.

      0

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جدیدترین آموزش های آنلاین



دانلود رایگان (هدیه ویژه)

کتاب آموزش زبان برنامه نویسی PHP را دانلود و همین امروز یادگیری را شروع کن و به جمع برنامه نویسان ملحق شو ;)

دانلود رایگان کتاب

سورس فروشگاهی دیجی کالا

بخش کاربران

هنوز عضو نیستید ؟ کلیک کنید

مجوزهای ما

logo-samandehi

دانلود کتاب

عضویت رایگان خبرنامه