تشخیص ارسال شدن یک متغیر (Variable) به صفحه، بر اساس روش GET یا POST (مثل ارسال شدن مقدار یک فیلد (Field) از فرم (Form) به صفحه)، با تابع isset ، در PHP

گاهی اوقات نیاز داریم تشخیص بدهیم که یک متغیر (Variable) بر اساس روش GET یا POST ، به صفحه ارسال شده است یا نه.

به عنوان مثال، فرض کنید که یک فرم (Form) داریم که در آن، یک فیلد (Field) با نام kelidestan وجود دارد. بنابراین هنگام نوشتن کدهای پردازش اطلاعات دریافت شده از فرم (Form)، برای اینکه تشخیص دهیم که فرم، Submit شده است یا نه، تنها کافی است که با استفاده از تابع isset در PHP ، بررسی کنیم که آیا یک متغیر (Variable) با نام kelidestan به صفحه ارسال شده است یا نه (البته باید در نظر بگیریم که روش ارسال به صورت GET بوده یا POST).

برای این بررسی، اگر فرم (Form) بر اساس روش GET باشد، باید کد PHP زیر نوشته شود :

و اگر فرم (Form) بر اساس روش POST باشد، باید کد PHP زیر را بنویسیم :

به مثال زیر توجه کنید :

مثال

یک فایل PHP می سازیم و در آن، یک فرم HTML طراحی می کنیم که اطلاعات آن به همین صفحه فعلی ارسال می شود و سپس یک سری کدهای PHP را در ابتدای صفحه می نویسیم که اگر فرم Submit شود، یک پیام در صفحه نمایش داده شود :

در صفحه، یک فرم HTML ( کلید شماره 511 ) به صورت زیر ساخته ایم :

در این فرم (Form)، روش ارسال اطلاعات فرم به صفحه پردازش، برابر POST انتخاب شده است :

و صفحه پردازش کننده فرم (Form) را هم برابر همین صفحه فعلی که خود فرم (Form) در آن وجود دارد، تعیین نموده ایم :

بنابراین پس از Submit کردن فرم (Form)، اطلاعات آن به همین صفحه فعلی ارسال می شود (برای پردازش).

در این فرم (Form)، یک فیلد (Field) با نام kelidestan داریم که بر اساس آن، تشخیص خواهیم داد که فرم Submit شده است یا نه (تشخیص با استفاده از کدهای PHP که در ابتدای صفحه می نویسیم) :

تشخیص اینکه فرم Submit شده است یا نه را در بخشی از صفحه بر اساس کدهای PHP نوشته ایم :

بنابراین اگر فرم Submit شود، عبارت form submitted ! را در صفحه خواهیم دید.

نتیجه :

خطا - صفحه را دوباره بارگذاری کنید
نکته

هنگامی که قصد داریم متوجه شویم که یک فیلد (Field) که بر اساس روش GET یا POST به صفحه ارسال شده است، خالی (بدون مقدار) بوده یا نه، باید از تابع empty استفاده نماییم ( کلید شماره 26304 ).

بنابراین تفاوت بین تابع isset و تابع empty را در نظر داشته باشید و کاربرد این دو را با یکدیگر اشتباه نگیرید.

نویسنده علیرضا گلمکانی
شماره کلید 26311
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 2 2 0
محمدرضا مهمدی
۱۳۹۷/۱۲/۰۲
۱۰:۲۷

با سلام ممنون از سایت خوبتون.

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

آیا روشی هست که متوجه بشیم $_POST  حاوی اطلاعات کدوم فرمه؟به طور مثال

$_POST که ما میخوایم پردازش کنیم حاوی داده  از فرم log in یا sign up ؟

admin
۱۳۹۷/۱۲/۰۲
۱۸:۵۲

با سلام.
در تمامی فرم هایی (Form) که به یک صفحه PHP واحد برای پردازش ارجاع می دهند، یک فیلد (Field) پنهان () با یک نام یکسان قرار می دهید (چون فیلد (Field) پنهان است، کاربر آن را در فرم (Form) نمی بیند، ولی در کدهای HTML صفحه وجود دارد). اما مقدار تعیین شده برای آن را در هر فرم (Form)، یک مقدار متفاوت انتخاب می کنیم (تا شناسایی فرم بر اساس آن باشد).
مثلا نام فیلد (Field) را برابر kelidestan_form_name انتخاب می کنیم و برای فرم مربوط به log in ، مقدار log_in_form و برای فرم مربوط به sign up ، مقدار sign_up_form را برای آن قرار می دهیم. 
پس کد زیر باید در فرم (Form) مربوط به log in قرار داده شود :



و کد زیر باید در فرم (Form) مربوط به sign up قرار داده شود :



بنابراین در صفحه PHP مربوط به پردازش اطلاعات ورودی فرم ها (Form)، ما قبل از هرگونه پردازشی، مقدار آن فیلد (Field) را بررسی می کنیم و با حالت بندی بر اساس مقدار آن فیلد (Field)، کدهای PHP پردازشی متفاوتی را اجرا می نماییم :


نکته :
دقت کنید که تفاوتی در استفاده از روش POST یا GET در فرم (Form) نمی باشد (با مشخصه  method از تگ form موجود در فرم، تعیین می کنیم که روش ارسال اطلاعات فرم به صورت POST یا GET باشد و باید یکی از این دو انتخاب شده باشد) و فقط اگر از روش GET استفاده کردید، به جای عبارت POST_$ باید عبارت GET_$ در کدها نوشته شود و همچنین چون در روش GET ، اطلاعات ارسالی فرم (Form) در آدرس اینترنتی (URL) صفحه پردازش فرم (Form) ذکر می شود، باید توابعی از PHP را برای تبدیل کاراکترهای غیرمجاز برای URL به کاراکترهای مجاز، استفاده نمایید (معمولا روش POST انتخاب می شود).

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)