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

متغیر$_POST و $_GET در php


متغیر$_POST و $_GET

متغیر$_POST و $_GET در php بخشی از متغیرهای سراسری هستند و در همه جای اسکریپت می توانید از آنها استفاده کنید ، هر دو متغیر $_POST و $_GET داده های ارسال شده توسط متدهای post و get از html را دریافت می کنند.

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

 

جمعاوری داده از فرم html

صفحه html زیر شامل یک فرم با عناصر ورودی مثل متن ، چند انتخابی ، یک انتخابی ، دکمه است . زمانی که کاربر این فیلد ها را تکمیل می کند و دکمه ارسال یا همان submit را میزند ، داده ها به صفحه grab_values.php ارسال می شود ، همان آدرسی که در قسمت action فرم تعریف شده است.

عکس زیر یک فرم ساده html  با متد post را نشان میدهد . عکس بعدی نتیجه ارسال و دریافت داده های ورودی کاربر توسط php را نمایش می دهد.

 

متد get در html

در فرم html زیر ما در قسمت method ، روش ارسال دیتا به سرور را مشخص می کنیم.

 

توسط php ، ما فقط با استفاده از آرایه گلوبال یا همان سراسری $_GET مقادیر ورودی را دریافت و چاپ می کنیم.

نقص متد get در html این است که مقادیر ارسال شده به سرور در آدرس بار مرورگر نمایش داده می شود ، پس ارسال اطلاعات حساسی مثل رمزهای عبور ، کلید های سکرت با استفاده از متد GET توصیه نمی شود.

همچنین طول کاراکترهای قابل ارسال توسط این متد به خاطر مرورگر های مختلف محدود شده است.

از جمله ویژگی های متد GET می توان به موارد زیر اشاره کرد:

  • درخواست هایی از جنس GET قابلیت Cache شدن دارند.
  • درخواست هایی از جنس GET در تاریخچه ی مرورگر کاربر باقی می مانند.
  • درخواست هایی از جنس GET را می توان Bookmark کرد.
  • درخواست هایی از جنس GET را هرگز نمی بایست برای داده های حساس مثل اطلاعات حساب کاربری مورد استفاده قرار داد.
  • درخواست هایی از جنس GET از لحاظ حجم داده ها دارای محدودیت هستند. حداکثر کاراکتری که از طریق یو آر ال می توان ارسال کرد، چیزی در حدود ۲۰۴۸ کاراکتر است.
  • درخواست هایی از جنس GET بهتر است که بیشتر برای دریافت اطلاعات مورد استفاده قرار گیرند.
  • درخواست هایی از جنس GET دارای امنیت پایینی هستند چرا که داده ها به عنوان بخشی از یو آر ال ارسال می شوند.
  • از متد GET هرگز نمی توان برای داده های باینری مثل تصاویر و … استفاده نمود.

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

 

متد POST در html

حجم بالایی از دیتا از طریق متد POST قابل ارسال است. از HTML 4.0 به بعد همچنین قابلیت ارسال multipart/form-data اضافه شد. متد post امن تر از Get است بدلیل اینکه مقادیر ورودی از طریق url قابل مشاهده نیستند و همچنین در تاریخچه (history) مرورگر ذخیره نمی شود.

برای استفاده از متد post کافیست که مقدار method را به POST تغییر بدید:

توسط php ، ما فقط با استفاده از آرایه گلوبال یا همان سراسری $_POST مقادیر ورودی را دریافت و چاپ می کنیم.

مزیت های استفاده از متد POST:

  • درخواست هایی از جنس POST هرگز Cache نمی شوند.
  • درخواست هایی از جنس POST در تاریخچه ی مرورگر باقی نخواهند ماند
  • درخواست هایی از جنس POST قابلیت Bookmark شدن ندارند.
  • هیچ گونه محدودیتی در ارتباط با میزان داده هایی که از طریق متد POST می توان به سمت سرور فرستاد وجود ندارد.
  • از متد POST می توان برای انتقال داده های باینری مثل تصاویر و … استفاده نمود.

 

مدیریت خطا (Error Handling) :

همیشه زمانی که در حال دریافت اطلاعات از متد POST/GET هستیم باید مراقب باشیم ، چونکه اگر کاربریه مقدار خالی را ارسال کند ،

اسکریپت PHP بالا یک خطایی را نشان می دهد. برای جلوگیری از نمایش اینگونه خطاهای غیرضروری می توانیم از توابع کنترلی مثل isset() استفاده کنیم . این تابع در صورتی که متغییر وحود داشته باشد مقدار TRUE را برمیگرداند.

خب اجازه بدید یک خطای دوستانه برای به جای خطای خود PHP نشان بدهیم .خب برای مدیریت خطا فایل grab_values.php را ویرایش می کنیم :

مثال بالا ساده ترین راه برای مدیریت خطا است اما راه های بهتری مثل تابع exit وحود دارد . امیدوارم این مقاله به شما در درک و یادگیری متغیر$_POST و $_GET و مدیریت خطا کمک کرده باشد .

امنیت ورودی های کاربر

به هیچ وجه ورودی های خام که از کاربر دریافت می کنید را در برنامه خود استفاده نکنید و یا اگر این ورودی ها را مستقیم در کویری SQL استفاده می کنید , احتمال لو رفتن تمام اطلاعات دیتابیس و یا هک شدن کل سایت شما بسیار بالاست . برای همین ورودی های کاربر را قبل از استفاده در کویری ها و ذخیره در دیتابیس , با توابعی که مربوط به امنیت فرم ها است و در مقاله اعتبار سنجی فرم ها در php آوردیم , بهره ببرید.

هر سوال یا مشکلی وجود داشت لطفا در نظرات این نوشته ارسال کنید . سریعا پاسخگوی سوالات شما هستیم .

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

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

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

avatar
5 دیدگاه ها
7 پاسخ ها
0 دنبال کننده ها
 
دیدگاه با بیشترین پاسخ
پرطرفدارترین دیدگاه ها
5 تعداد نویسندگان دیدگاه
حسن شفیعیs-rezaiezeinabمحمد جوادزهره نویسنده های اخیر دیدگاه
s-rezaie
s-rezaie

سلام خسته نباشید . من وقتی داخل فایل php از متد post برای دریافت اطلاعات از سمت کلاینت استفاده میکنم ، از postman متغیر ها رو براش با متد post میفرستم ولی با post متغیر ها رو خالی دریافت میکنه درحالی که اگر همونو با get بنویسم درست دریافتش میکنه نمیدونم مشکلش کاست؟ممنون میشم اگه راهنمایی لازم رو بکنید.

zeinab
zeinab

سلام اگه بخوام یه input داشته باشم از نوع تکست که چیزی که کاربر مینویسه زیرش نمایش داده بشه .و بعد دوباره تو همون input چیزدیگری نوشت نمایش تکست قبلی پاک نشه و زیر هم نشون داده بشه چیکار کنم؟

محمد جواد
محمد جواد

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

محمد جواد
محمد جواد

سلام . در صورتی که بخوایم از هر آدرسی غیر از آدرس سایت خودمون ، از ارسال پارامتر به صفحات سایتمون جلوگیری کنیم باید چیکار کنیم ؟
برای مثال اگر ما سایت الف باشیم و سایت دیگری به نام سایت جیم وجود داشته باشه ، سایت جیم نتونه به سایت ما پارامتری از جنس گت یا پست ارسال کنه

زهره
زهره

ببخشید سوالی داشتم از خدمتتون موقعی که مقدار ارسال شده به url رو با $_GET میگیریم برای امنیتش چه کدی باید استفاده کنیم؟

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

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

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

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

مجوزهای ما

logo-samandehi

بخش کاربران

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

دانلود کتاب

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

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