متغیرهای superglobal در PHP – مقدمه
در این بخش از آموزش پی اچ پی، می خواهیم با متغیرهای superglobal در PHP آشنا شویم. در ابتدا توضیح کوتاهی در مورد متغیرهای سراسری یا همان متغیرهای گلوبال در PHP خواهیم داد.
پس از آن با متغیرهای $_GLOBALS و $_GET و $_POST و $_REQUEST آشنا خواهیم شد.
در بخش مرتبط با متغیر GET و همین طور متغیر POST در PHP به بررسی نحوه عملکرد آن ها با استفاده از ابزار Postman خواهیم پرداخت.
در ادامه آشنایی با آرایه های فوق سراسری در php به بررسی متغیر $_File خواهیم پرداخت. در این بخش نیز با استفاده از postman چند فایل را آپلود می کنیم تا با نحوه کار PHP در زمینه آپلود فایل آشنا شویم.
در ادامه معرفی متغیرهای سوپر گلوبال در پی اچ پی، به بررسی متغیر $_SERVER خواهیم پرداخت. این متغیر superglobal ، یکی از مهم ترین و کاربردی ترین متغیرهای سراسری در php می باشد.
در انتها نیز در مورد متغیرهای superglobal $_COOKIE و متغیر $_SESSION خواهیم پرداخت. در انتها نیز متغیر سوپر گلوبال $_ENV را مورد بررسی قرار خواهیم داد.
لیست موارد مطرح شده در آموزش متغیرهای superglobal
این آموزش که در مورد آرایه های فوق سراسری یا همان آرایه های superglobal صحبت می کند، از قسمت زیر تشکیل شده است. شما می توانید با کلیک روی هر کدام از لینک های زیر، به قسمت دلخواه آموزش در این صفحه منتقل شوید:
متغیرهای superglobal چیستند؟
همانگونه که می دانید متغیرهای سراسری در هرجایی از کدهای و در هر فایلی، قابل دسترسی هستند. شما می توانید با استفاده از کلمه کلیدی global در جلوی نام متغیر، از آن مقدار آن متغیر در هرجایی از کد، استفاده کنید.
این موضوع خصوصا برای استفاده از متغیرها، خارج از ناحیه scope خودشان، بسیار کاربرد دارد.
علاوه بر این مورد، زبان PHP دارای یک سری متغیر سراسری از پیش تعریف شده می باشد که به آن ها، متغیرهای فوق سراسری یا متغیرهای superglobal گفته می شود.
در واقع با استفاده از متغیرهای سوپر گلوبال، PHP یک سری از تنظیمات و مقادیر مهمی را که از سمت وب سرور دریافت می کند، در اختیار برنامه نویس قرار می دهد.
متغیرهای superglobal که در فارسی به متغیرهای فوق سراسری ترجمه شده است، دارای انواعی به شرح زیر می باشند. در بخش های مختلف زیر سعی کرده ایم که با توضیحی کوتاه، شما را با آن ها آشنا سازیم.
این آموزش، یکی از بخش های آموزش های رایگان PHP در سایت وبمستر وردپرس می باشد. در صورتی که می خواهید به کلیه بخش های این سری آموزشی رایگان دسترسی داشته باشید، می توانید از لینک زیر استفاده کنید:
متغیر $_GLOBALS در PHP
متغیر اصلی سراسری در زبان PHP، متغیر GLOBALS می باشد. برای تست آن می توانید عبارت $_GLOBALS را در داخل تابع var_dump گذاشته و نتیجه را در خروجی مشاهده کنید.
به دلیل طولانی بودن خروجی، آن را در این بخش نیاورده ایم. خودتان می توانید به راحتی خروجی آن را مشاهده کنید.
نکته مهم در مورد این آرایه این می باشد که شامل کلیه متغیرهای superglobal موجود در PHP می باشد. یعنی متغیر، آرایه ای از کلیه آرایه های فوق سراسری در پی اچ پی می باشد. همه متغیرهای سوپر گلوبال که قرار است در ادامه معرفی گردد، عناصر آرایه های این متغیر فوق سراسری می باشند.
متغیر $_GET در PHP
متغیر سوپر گلوبال $_GET یکی دیگر از متغیرهای superglobal کاربردی در PHP می باشد. متغیر GET شامل مقادیری است که از سمت کاربر در url به صورت query string به سرور ارسال شده است.
در واقع url درخواست شده توسط کاربر، در انتهای خود دارای کوئری استرینگ می باشد. داده هایی که به این روش (یعنی متد GET) به سمت سرور فرستاده می شوند، توسط این متغیر سوپر گلوبال قابل دسترسی می باشند.
یکی از مثال های رایج در این زمینه، ارسال داده های یک فرم با متد GET به سمت سرور می باشد. در این صورت اطلاعات کاربر در انتهای URL درخواست شده، به صورت query string قرار داده شده و به سمت وب سرور فرستاده می شود.
این آرایه همانند سایر متغیرهای superglobal از نوع Associative array می باشد. یعنی با توجه به نام یا همان کلید یا key آن، قابل دسترسی می باشد.
فرض کنید درخواستی به صورت عکس زیر در url فرستاده شده باشد. در این صورت خروجی متغیر GET با تابع var_dump چیزی به صورت زیر می باشد:
استفاده از Postman برای ادامه این آموزش
Postman یک ابزار بسیار کاربردی است که به ما کمک می کند تا به سرعت یک درخواست http را ایجاد کرده و ارسال کنیم. برای اینکه در این آموزش درگیر ساخت فرم و سایر موارد نشویم، برای تست متغیرهای superglobal و شبیه سازی درخواست های http فرستاده شده، از ابزار postman استفاده خواهیم کرد.
متغیر $_POST در PHP
متغیر $_POST در PHP یکی از متغیرهای superglobal ای می باشد که به طور وسیعی در برنامه نویسی استفاده می شود. در بسیاری از موارد برای فرستادن داده های یک فرم HTML توسط کاربر به سمت سرور، از متد POST استفاده می شود.
برای دریافت این داده ها که با متد post به سمت سرور فرستاده شده، از متغیر سراسری $_POST باید استفاده کنیم. در واقع این متغیر مانند سایر متغیر های superglobal ، آرایه ای با فرم Associative می باشد. شما می توانید با استفاده از key آن ها، به value هر مقدار از آرایه دسترسی داشته باشید.
از متغیر فوق سراسری $_POST در فرستادن و پاس دادن متغیرها بسیار استفاده می شود.
متغیر $_REQUEST در PHP
متغیر $_REQUEST در واقع یکی از آرایه های سوپر گلوبال در PHP می باشد که شامل ترکیبی از متغیر های سراسری $_GET و $_POST می باشد. در واقع هر دیتایی چه به صورت متد GET فرستاده شده یا چه به صورت متد POST فرستاده شده باشد، در داخل این متغیر موجود می باشد.
به عنوان مثال برای این حالت، می توانیم submit کردن یک فرم با متد post ای را مثال بزنیم، که در url خود از کوئری استرینگ نیز استفاده کرده است.
خروجی آن چیزی مشابه زیر می باشد. برای این مثال نیز مانند بخش های قبل از postman استفاده شده است.
نکته در مورد هم نام بودن دو متغیر در متدهای GET و POST
فرض کنید در درخواست ارسال شده سمت سرور، یک متغیر هم نام، هم در متد GET و هم در متد POST استفاده شده است. در صورت وجود داده های تکراری مثل حالت بالا، داده های متد POST ارجحیت بالاتری داشته و متغیر سراسری $_REQUEST ، داده متد POST را نمایش خواهد داد.
متغیر $_FILE در PHP
عموما برای فرستادن فایل به سمت سرور، از فرم ها استفاده می شود. اطلاعات مرتبط با فایل های فرستاده شده سمت سرور در متغیر $_FILE قرار می گیرد.
متغیر $_FILE یکی از متغیرهای superglobal می باشد که کاربرد زیادی در PHP دارد. متغیر $_FILE در واقع آرایه ای از فایل های فرستاده شده به سمت سرور می باشد. شما می توانید با استفاده از نام متغیر مورد نظر به آن دسترسی داشته باشید.
فرستادن چندین فایل به سمت سرور و دسترسی به مشخصه خاصی در آن
در صورتی که مثلا دو عکس به سمت سرور فرستاده باشید و بخواهید مثلا به سایز آن در سمت سرور دسترسی داشته باشید، کافی است از صدا کردن آن به صورت $_FILES[‘image_2’][‘size’] ، استفاده کنید.
متغیر $_SERVER در PHP
یکی دیگر از متغیرهای superglobal بسیار کاربردی در PHP متغیر $_SERVER می باشد. متغیر فوق سراسری $_SERVER ، یک آرایه انجمنی می باشد شامل اطلاعاتی است که از طریق وب سرور در اختیار PHP قرار گرفته است. البته آرایه $_SERVER یک سری اطلاعات اضافی نیز در خود نگهداری می کند.
این اطلاعات شامل قسمت های مختلفی، از جمله اطلاعات مرتبط با header فرستاده درخواست، اطلاعات مرتبط با path ها و همین طور اطلاعات مرتبط به محل اجرای برنامه در سمت سرور می باشد.
نکته مهم در مورد نمایش متغیر $_SERVER در بین کدها
هیچگاه آرایه $_SERVER را در بین کدهای خود چاپ نکنید. متغیر $_SERVER دارای اطلاعات حیاتی و مهم سرور شما می باشد. با چاپ آن عملا این اطلاعات به کاربر فرستنده درخواست نمایش داده می شود.
لذا ریسک مورد هک واقع شدن سرور شما، بسیار بالا خواهد رفت. بنابراین به هیچ عنوان از چاپ آن در سمت کاربر استفاده نکنید.
متغیر تستک دارای اجزا بسیار متنوعی می باشد. در این بخش شما را با کاربرد برخی از این اجزا آشنا می کنیم:
متغیر $_COOKIE در PHP
با استفاده از متغیر $_COOKIE می توانید به کوکی هایی که در مرورگر کاربر تنظیم شده است، دسترسی داشته باشید.
عموما از کوکی ها برای شناسایی یک کاربر استفاده می شود. در واقع یک cookie فایل یا اطلاعات کوچکی است که عموما از سمت سرور برای کاربر درخواست کننده، فرستاده می شود تا در کامپیوتر یا همان مرورگر او جاسازی گردد.
حال هر بار که مرورگر کاربر، درخواستی را سمت سرور مورد نظر می فرستد، عملا در هدر درخواست خود، این کوکی ها نیز، به همراه درخواست به سمت سرور فرستاده می شود.
بدین صورت وب سرور به راحتی می تواند تشخیص دهد که این کاربر چه کسی می باشد و درخواست از سمت چه کسی فرستاده شده است.
در بخشی جداگانه به صورت کامل به این مبحث در PHP خواهیم پرداخت. اما در حال حاضر نکاتی مربوط به آن را در زیر آورده ایم تا با این متغیر سووپر گلوبال در PHP بیشتر آشنا شوید.
برای اینکه کمی مثال بهتر شود، بر روی اسکریپت مورد درخواست نیز، توسط دستور setcookie یک کوکی ست کردم تا در هنگام درخواست، به سمت مرورگر درخواست کننده ارسال گردد.
همان طور که می بینید، هر دو این مقدارها، در درخواست و دریافت در هدر موجود می باشند.
$cookie_name = "msn_cookie_sample"; $cookie_value = "mehdi_soltani_cookie"; setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); var_dump($_COOKIE);
متغیر $_SESSION در PHP
همان طور که پیش تر هم در بخش مرتبط با کوکی ها بیان شد، پروتکل http یک پروتکل stateless می باشد. بنابراین در صورتی که درخواستی مجددا از سمت کاربر به سرور ارسال شود، عملا وب سرور نمی تواند آن را شناسایی کند.
به عنوان مثال فرض کنید در سایتی لاگین کرده اید و می خواهید به صفحه دیگری از همان سایت بروید. در صورتی که از متغیری استفاده نکنید تا حالت لاگین شدن به سرور اعلام نگردد، عملا وب سرور نمی تواند که شما لاگین بودید و عملا مجددا باید دیدن صفحه ای دیگر (مثلا در پنل کاربری خود) مجددا لاگین کنید.
برای حل این مشکل می توانید از متغیر SESSION که در سمت سرور ست می شود، استفاده کنید. البته در مورد مثال بالا، می توانید به راحتی از COOKIE هم استفاده نمایید.
با استفاده از متغیر $_SESSION می توانید یک نشست در سمت سرور برای یک کاربر ایجاد کنید. این باعث می شود که کاربر بتواند با حفظ اطلاعات خود، به صفحات مختلف سایت برود بدون اینکه وضعیت فعلی او، از دست برود.
به عنوان مثال می توانید برای نگهداری سبد کالا در یک فروشگاه اینترنتی، از این تکنیک یعنی آغاز یک session در سمت سرور، استفاده نمایید.
عملا برعکس COOKIE ها، این اطلاعات در سمت کامپیوتر یا دستگاه کاربر ذخیره نمی شود، بلکه این اطلاعات در سمت سرور ذخیره و نگهداری می شود.
در بخشی جداگانه به صورت کامل مبحث $_SESSION در PHP خواهیم پرداخت. اما در حال حاضر نکاتی مربوط به آن را در زیر آورده ایم تا با این متغیر فوق سراسری در PHP بیشتر آشنا شوید.
// Start the session session_start(); $_SESSION['msn_user_session1'] = 'mehdi98987676111'; $_SESSION['msn_user_session2'] = 'mehdi98987676222'; var_dump($_COOKIE); var_dump($_SESSION);
متغیر $_ENV در PHP
شما می توانید در هر وب سروری، یک سری متغیرهای محیطی یا environment variable تعریف کنید. سپس با استفاده از آن ها، برنامه را اجرا کنید.
این امر خصوصا در زمانی که شما از چندین سرور برای اجرای کدهای خود استفاده می کنید و api های مرتبط به هر سرور، با دیگر فرق داشته اما کدهای شما، عملا تفاوت باهم ندارند، بسیار کاربردی می باشد. (مثلا دارای سه سرور برای محیط های development و test و production خود هستید.
شما می توانید با دستوراتی همچون setenv یا putenv متغیر محیطی برای خود تعریف کنید و سپس مثلا با استفاده از getenv از آن استفاده کنید.
ضمن اینکه به جای این کار، می توانید مستقیما از متغیر $_ENV استفاده نمایید.
در کد زیر از هر دو روش برای این کار استفاده شده است. برای اینکه با این مورد بیشتر آشنا شوید، می توانید از مقاله هایی که برای مطالعه بیشتر در انتهای این مطلب آورده شده است، استفاده نمایید.
$_ENV['msn_first_env_key'] = 'first_value'; var_dump($_ENV); //The result is something like this in the following: array (size=1) 'msn_first_env_key' => string 'first_value' (length=11)
نتیجه گیری برای آموزش متغیرهای superglobal در PHP
در این سری از آموزش های PHP ، با انواع متغیرهای superglobal در زبان پی اچ پی آشنا شدیم. کلیه آرایه های فوق سراسری که در زبان PHP مورد استفاده قرار می گیرند به صورت خلاصه توضیح داده شده اند.
برای بررسی جزئی تر آرایه های سوپر گلوبال، ممکن است به توضیحات بیشتری نیاز داشته باشید که هر کدام از آن ها در مقاله ای جداگانه مورد بررسی قرار خواهند گرفت.
ممکن است شما با موارد بیشتری در این حوزه آشنا باشید، که ما فراموش کرده ایم تا آن ها را در این مقاله قرار دهیم.
اگر شما از این موارد آگاه هستید، حتما در بخش نظرات عنوان کنید تا آن را به مقاله “آموزش آرایه های فوق سراسری در PHP ” اضافه کنیم. در ضمن اگر این مقاله را مفید دیدید، حتما آن را به دوستان خود معرفی کرده یا در شبکه های اجتماعی به اشتراک بگذارید.
راهنما برای مطالعه بیشتر:
برای تولید مقاله انواع عملگرها در PHP ، از لینک های زیر استفاده شده است که برای مطالعه بیشتر، می توانید به آن ها مراجعه کنید:
راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:
شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید:
ای کاش ویدیو بود
سلام
مقالتون خوب ، کامل ، و روان توضیح داده شده
ممنونم.
با سلام و تشکر از مقالات عالیتون واقعاً کامل هستند و مشخصا برای تولید این مقاله ها زحمات زیادی کشیده اید
موفق باشید
سلام به شما دوست عزیز
بسیار سپاسگزارم که وقت ارزشمند خودتون رو گذاشتید تا پیام های محبت آمیز برای ما ارسال کنید.
از اینکه این مقالات برای شما کاربردی بوده، واقعا خوشحال هستیم.
سپاس فراوان