دریافت اطلاعات فرم با تابع fsockopen

  • آپدیت شده در تاریخ

دریافت اطلاعات فرم با تابع fsocketopen

قصد داریم روشی دیگر برای ارسال و دریافت اطلاعات فرم ها با تابع fsockopen را معرفی کنیم . در آموزش های قبل در مورد ارسال و دریافت اطلاعات فرم با php و متد های $_GET و $_POST آشنا شدید . هر دوی این متد ها برای ارسال داده از یک صفحه به صفحه دیگر استفاده می شوند . اما با استفاده از POST می توانید اطلاعات را به روش پنهانی در درخواست های HTTP ارسال کنید و متد GET نیز داده ها را از طریق URL ارسال می کرد , درصورتی که اطلاعات مهم مثل پسوردها را با این متدها ارسال کنیم , این روش ها بسیار ناامن خواهد بود .

در اینجا قصد داریم در مورد تابع fsockopen در php صحبت کنیم .

دریافت اطلاعات فرم با تابع fsocketopen

با تابع fsockopen می توانیم داده هایی را که از یک صفحه به صفحه دیگر با متد POST به صورت خیلی ایمن ارسال کنیم به طوری که هیچ کسی نمی توانید با جاواسکریپت آن را هک کند !

درباره تابع fsockopen :

تابع fsockopen یک سرور دقیقا بر روی همان پورتی که تعیین کردیم باز می کند . در اینحا پورت ما ۸۰ و هاست www.netparadis.com است .بعد منتظر می ماند که ما چه کاری باهاش انجام بدیم !

کد php زیر چک می کند که آیا http در سرور فعال است یا نه,  اگر غیرفعال بود یک پیام خطا ارسال می کنیم و در همانجا اسکریپت را به پایان می رسانیم .

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

اما اگر کانکشنی برای اتصال پیدا کرد , ادامه کدها را اجرا می کنیم .در اینجا ما اطلاعات هدر (header) را همراه داده های فرم به  صفحه second.php با استفاده از تابع fwrite ارسال می کنیم.

کد زیر داده های ذخیره شده را به صورت یک آرایه برگشت می دهد .

داده ها برگشت داده شده شامل بعضی اطلاعات هدر و داده های ارسال شده خواهد بود . داده های دریافتی از فرم در ایندکس ۸ام آرایه خواهد بود .

در کد بالا داده ها را در صفحه چاپ کردیم که شما می توانید آنها را هرطور که میخواهید مثل اعتبار سنجی , ذخیره در دیتابیس و .. استفاده کنید.

فایل های استفاده شده در مثال آموزش دریافت اطلاعات فرم با تابع fsockopen

فایل file.php :

در این صفحه , مقادیر وارد شده در textbox ها به همین صفحه ارسال می شود ,در اینجا با استفاده از تابع fsockopen , مقادیر به صفحه second.php برای انجام عملیات بر روی این داده ها ارسال خواهند شد.

فایل second.php :

ما به جای استفاده مستقیم از متد POST از تابع fsockopen برای امنیت بیشتر در ارسال داده ها بهره بریم . حالا در این صفحه ما مقادیر ارسال شده را با دستور echo نمایش می دهیم.

در این صفحه می توانید با دریافت اطلاعات فرم هرگونه عملیاتی مثل ذخیره , احراز هویت و استفاده از آن در کویری sql و.. را انجام دهید

فایل style.css :

کد های css زیر برای شکیل شدن فرم ما استفاده شده است .

جمع بندی :

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

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

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

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۴)

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

  1. علی ۳ مرداد ۱۳۹۷

    با سلامی دوباره خدمت شما
    شرمنده من زیاد مزاحمتون میشم

    چطوری میشه داده های فرم و به دیتابیس ارسال کرد؟
    هر جا رفتم کداشون مشکل داشت!
    اگر ممکنه یک سسری کده تست شده بدید!

    باتشکر

    پاسخ
    1. حسن شفیعی ۳ مرداد ۱۳۹۷

      سلام . قسمت اول آموزش اتصال به دیتابیس با mysqli در مورد با این سوال شماست.
      همچنین بهتره php را مقدماتی به بالا بلد باشید تا این سوالات رو خودتون بتونید جواب بدید.
      موفق باشید

      پاسخ
  2. علیرضا ۱۰ آبان ۱۳۹۶

    سلام اقای شفیعی
    من میخوام به جای این که از کلاینت برای من پیغام بیادش از سمت سرور به کاربر پیام ارسال کنم مثلا اگر در جدولی در پایگاه داده کاربر تغیراتی ایجاد شد مثلا اگر براش پیام اومد اون پیام رو برای کاربر ارسال کنم یا حتی همین چتروم های ساده . من قبلا با ajax هر ۱۰ ثانیه این رو پیاده کردم اما مشکل اینه وقتی کاربرا زیاد بشن دیگه سایت داغون میشه و اون صفحه که باید اطلاعات رو بررسی کنه جواب نمیده . حالا برای این که زیاد به سرور فشار نیاد میشه از همین socket در php برای ارسال پسام به کاربر استفاده کرد؟
    سوال دیگه این که من یک اسکریپت دانلود کردم که یک صفحه داشت که منتظر میموند تا یک کاربر یک صفحه رو باز کنه و وقتی اون صفحه رو کاربر باز میکرد یک ارتباطی بین این دو بوجود میومد ( البته فقط من از روی متنش خوندم و خودم نتونستم کامل درکش کنم) وبعدش من خودم باز هم اون صفحه رو باز کردم (که کاربر باید بازش میکرد) اما ارور میداد و میگفت سرور قطع شده … چطور میشه چندین درخواست رو به این شکل کنترل کرد ؟
    با تشکر از سایت خوبتون

    پاسخ
    1. حسن شفیعی ۱۰ آبان ۱۳۹۶

      سلام . مورد اولی برای درصورتی جوابگو هستش که سایت شما یک چت رومی باشه که هر لحظه برای آپدیت مقدار به دیتابیس وصل بشه و یک مقداری رو چک کنه و خروجی رو به کاربر نشون میده . در صورتی چت روم ندارید توصیه میشه بر روی هاست های اشتراکی این مورد رو انجام ندید چونکه بنابر چیزی که تجربه داشتید باعث فول شدن مموری و منابع سیستمی سرور میشه .
      ولی موردی که در صورت وجود یک پیام جدید ، اون رو به کاربر ارسال کنه بهتره کد ها رو در یک فایل جداگانه قرار بدید و به جای هر ۱۰ ثانیه ، حدود ۶۰ ثانیه درخواست چک رو با اجکس ارسال کنید و فقط تاییدیه یا همون مقدار عددی تعداد پیام را برای هر کاربر نشون بدید تا اینکه منابع سخت افزاری در صورت وجود کاربر زیاد درگیر نشه . بعد اینکه کاربر بر روی قسمت ناتیفیکیشن کلیک کرد اون موقع می تونید محتویات پیام رو برای اون شخص بخوانید و نشون بدید . برای بحث سوکت میتونید از websocket استفاده کنید که کمی بحث تخصصی تری رو میطلبه

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

      موفق باشید

      پاسخ
دوره های آموزشی