برای فرستادن داده به سایت توسط پروتکل HTTP دو روش فرستادن استفاده از تعبیه داده ها درون آدرس URL و استفاده از فرم های اچ تی ام ال وجود دارد. در این مطلب تمرکز ما روی فرستادن داده از طریق آدرس URL با استفاده از رشته کوئری (Query String) و استفاده از آرایه سراسری GET_$ برای دسترسی به رشته کوئری ها درون اسکریپت فعلی است. رشته کوئری جفت کلیدهایی به صورت key=value هستند که هر جفت کلید و مقدار با کاراکتر & از دیگری جدا می شوند. همچنین در ابتدای رشته کوئری کاراکتر ? قرار می گیرد تا رشته کوئری را از آدرس URL جدا و مجزا کند.

بنابراین با توجه به رشته کوئری بالا سه دوتایی (زوج) key1=value و key2=value و key3=value یا به عبارت بهتر سه مقدار که با سه کلید مجزا به وب سایت فرستاده شده اند. توجه کنید تمامی مقدارها به صورت رشته به اسکریپت پی اچ پی فرستاده می شوند، بنابراین عدد عدد 10 به صورت رشته خواهد بود.

همانطور که گفتیم درون هر اسکریپت می توانیم از آرایه GET_$ برای دسترسی به مقدار هر کدام از کلیدهای رشته کوئری دسترسی پیدا کنیم. برای دسترسی به هر مقدار باید از نام کلید در رشته کوئری به عنوان کلید در آرایه انجمنی GET_$ استفاده کنیم. بنابراین با توجه به آدرس زیر که در آن یک کلید به نام name تعیین شده است، ابتدا توسط تابع ()isset بررسی کرده ایم که آیا کلیدی به نام name در آرایه GET_$ وجود دارد و حال اگر وجود دارد می خواهیم توسط تابع ()empty تعیین کنیم که کلید دارای مقدار است یا مقداری برای آن تعیین نشده است.

بنابراین هر گاه در آدرس URL مربوط اسکریپت فعلی اگر رشته کوئری تعیین شود، کلیدی همنام با کلید رشته کوئری درون آرایه سراسری GET_$ ایجاد می شود. البته لزومی ندارد که حتما کلید در رشته کوئری دارای مقدار باشد، برای همین ابتدا توسط متد ()isset وجود و ایجاد شدن کلید را بررسی می کنیم و سپس توسط متد ()empty بررسی می کنیم که آیا کلید دارای مقدار است یا نه؟

در کدهای زیر می خواهیم درون اسکریپت فعلی بررسی کنیم که آیا کلید os در رشته کوئری وجود دارد و ایا اینکه مقداری برای آن تعیین شده است یا نه؟ توجه کنید که اگر متغیر یا آرایه ای دارای مقدار نباشد، پس خروجی تابع ()empty برابر با TRUE است، پس در شطر از عملگر منفی کردن ! استفاده کرده ایم. بنابراین در صورتی که کلید os وجود نداشته باشد یا کلید دیگری در رشته کوئری تعیین کرده باشیم و یا اینکه کلید os باشد ولی مقداری برای آن تعیین نکرده باشیم، پس پیغام خط ۱۱ نشان داده می شود.

در خط دوم آرایه معمولی به نام operating_systems$ ایجاد کردیم که هر عنصر آن نام یکی از سیستم عامل هایی است که آنها را می شناسید. سپس و در صورتی که کلید os با مقدار تعیین شده باشد، می خواهیم توسط تابع ()in_array بررسی کنیم که آیا مقدار کلید os که یکی از عناصر آرایه operating_systems$ است یا نه؟ اگر مقدار مشابه عصنری درون ارایه نباشد، پس پیغام خط ۸ نشان داده می شود.

تابع ()in_array برای بررسی وجود مقدار در یک آرایه

تابع ()in_array یکی از چندین تابع پی اچ پی برای انجام عملیات روی آرایه ها است که پارامتر اول آن یک مقدار، رشته ای یا عددی یا در اینجا مقدار کلیدی از آرایه GET_$ است و پارامتر دوم آن یک آرایه یا نام متغیر آرایه ای است که می خواهیم بررسی کنیم که آیا پارامتر اول در آن وجود دارد یا نه؟ اگر مقدار وجود داشت، پس مقدار TRUE برگشت داده می شود ولی اگر وجود نداشت، مقدار FALSE برگشت داده خواهد شد.

توجه کنید که آرایه operating_systems$ در کد بالا از نوع آرایه های معمولی بوده است ولی مطابق کد زیر می توانیم بررسی وجود یا عدم وجود یک مقدار را درون آرایه های انجمنی نیز انجام دهید. در کدهای زیر خروجی هر خط از دستورهای echo جلوی آن به صورت توضیح (Comment) آورده شده است.

کاربردهای متد GET در پروتکل HTTP

۱ – نخستین کاربرد فرستادن داده ها از طریق آدرس URL به وب سایت است که این داده ها از طریق رشته کوئری فرستاده می شوند. بنابراین می توانیم درون اسکریپت فعلی از آرایه GET_$ برای بررسی وجود یک کلید خاص و سپس دسترسی به مقدار آن استفاده کنید. به طور مثال شما می توانید از طریق مقدارهای رشته کوئری فرستاده شده، درون کوئری های SQL استفاده کنید یا با توجه به مسئله و هدف خودتان، می توانید هر عملیات دیگری را توسط مقدارهای کلید در رشته انجام دهید. توجه کنید وقتی می گوییم اسکریپت فعلی، یعنی فایلی پی اچ پی که توسط آدرس URL هم اکنون درخواست شده است.

۲ – می توانید از آن برای فرستادن داده های فرم های اچ تی ام ال استفاده کنید. در مطلب های پیش رو به طور کامل در مورد فرم های اچ تی ام ال در پی اچ پی و خود لاراول صحبت شده است ولی در ایت مطلب و پیش از ورود به بحث فرم های اچ تی امل، اکیدا توصیه می کنیم که از متد GET استفاده نکنید و حتما باید متد POST را به کار ببرید. دلیل عدم استفاده از متد GET در این است که پس از واگذاری (Submit یا فرستادن) فرم اچ تی ام ال که توسط متد GET اداره می شود، تمامی داده ها در آدرس URL و به صورت رشته کوئری نمایش داده می شود، فرض کنید که داده های ورود به سایت توسط متد GET نشان داده شوند. بنابراین با اینکه از متد GET نیز می توان در فرم های اچ تی ام ال استفاده کرد ولی باید از این کار خوداری شود.

دسترسی به ورودی در URL با کلاس Request در لاراول – اداره کردن درخواست GET و رشته کوئری در لاراول

تغییر اندازه تصویر با نشانی URL در پی اچ پی – دریافت ورودی از نشانی URL و سپس تغییر اندازه تصویر

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

اداره کردن فرم HTML در PHP – بخش نخست

اداره کردن فرم HTML در PHP – بخش دوم