متغیرهای superglobal در PHP – مقدمه

در این بخش از آموزش پی اچ پی، می خواهیم با متغیرهای superglobal در PHP آشنا شویم. در ابتدا توضیح کوتاهی در مورد متغیرهای سراسری یا همان متغیرهای گلوبال در PHP خواهیم داد.

پس از آن با متغیرهای $_GLOBALS و $_GET و $_POST و $_REQUEST آشنا خواهیم شد.

در بخش مرتبط با متغیر GET و همین طور متغیر POST در PHP به بررسی نحوه عملکرد آن ها با استفاده از ابزار Postman خواهیم پرداخت.

متغیرهای superglobal در PHP

در ادامه آشنایی با آرایه های فوق سراسری در php به بررسی متغیر $_File خواهیم پرداخت. در این بخش نیز با استفاده از postman چند فایل را آپلود می کنیم تا با نحوه کار PHP در زمینه آپلود فایل آشنا شویم.

در ادامه معرفی متغیرهای سوپر گلوبال در پی اچ پی، به بررسی متغیر $_SERVER خواهیم پرداخت. این متغیر superglobal ، یکی از مهم ترین و کاربردی ترین متغیرهای سراسری در php می باشد.
در انتها نیز در مورد متغیرهای superglobal $_COOKIE و متغیر $_SESSION خواهیم پرداخت. در انتها نیز متغیر سوپر گلوبال $_ENV را مورد بررسی قرار خواهیم داد.

لیست موارد مطرح شده در آموزش متغیرهای superglobal

این آموزش که در مورد آرایه های فوق سراسری یا همان آرایه های superglobal صحبت می کند، از قسمت زیر تشکیل شده است. شما می توانید با کلیک روی هر کدام از لینک های زیر، به قسمت دلخواه آموزش در این صفحه منتقل شوید:

متغیرهای superglobal چیستند؟

همانگونه که می دانید متغیرهای سراسری در هرجایی از کدهای و در هر فایلی، قابل دسترسی هستند. شما می توانید با استفاده از کلمه کلیدی global در جلوی نام متغیر، از آن مقدار آن متغیر در هرجایی از کد، استفاده کنید.

این موضوع خصوصا برای استفاده از متغیرها، خارج از ناحیه scope خودشان، بسیار کاربرد دارد.

علاوه بر این مورد، زبان PHP دارای یک سری متغیر سراسری از پیش تعریف شده می باشد که به آن ها، متغیرهای فوق سراسری یا متغیرهای superglobal گفته می شود.

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

متغیرهای superglobal که در فارسی به متغیرهای فوق سراسری ترجمه شده است، دارای انواعی به شرح زیر می باشند. در بخش های مختلف زیر سعی کرده ایم که با توضیحی کوتاه، شما را با آن ها آشنا سازیم.

این آموزش، یکی از بخش های آموزش های رایگان PHP در سایت وبمستر وردپرس  می باشد. در صورتی که می خواهید به کلیه بخش های این سری آموزشی رایگان دسترسی داشته باشید، می توانید از لینک زیر استفاده کنید:

برای دسترسی به کلیه سرفصل های آموزش رایگان PHP می توانید از این لینک استفاده کنید.

متغیر $_GLOBALS در PHP

متغیر اصلی سراسری در زبان PHP، متغیر GLOBALS می باشد. برای تست آن می توانید عبارت $_GLOBALS را در داخل تابع var_dump گذاشته و نتیجه را در خروجی مشاهده کنید.

به دلیل طولانی بودن خروجی، آن را در این بخش نیاورده ایم. خودتان می توانید به راحتی خروجی آن را مشاهده کنید.

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

  • دسترسی به هر متغیر برنامه با استفاده از متغیر GLOBALS: 

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

    فرض کنید در اسکریپت خود، متغیری با نام username تعریف کرده اید. برای دسترسی به این متغیر، علاوه بر نام خود آن، می توانید از $_GLOBALS[‘username’] نیز، برای دسترسی به متغیر خود بهره ببرید.

متغیر $_GET در PHP

متغیر سوپر گلوبال $_GET یکی دیگر از متغیرهای superglobal کاربردی در PHP می باشد. متغیر GET شامل مقادیری است که از سمت کاربر در url به صورت query string به سرور ارسال شده است.

در واقع url درخواست شده توسط کاربر، در انتهای خود دارای کوئری استرینگ می باشد. داده هایی که به این روش (یعنی متد GET) به سمت سرور فرستاده می شوند، توسط این متغیر سوپر گلوبال قابل دسترسی می باشند.

یکی از مثال های رایج در این زمینه، ارسال داده های یک فرم با متد GET به سمت سرور می باشد.  در این صورت اطلاعات کاربر در انتهای URL درخواست شده، به صورت query string قرار داده شده و به سمت وب سرور فرستاده می شود.

این آرایه همانند سایر متغیرهای superglobal از نوع Associative array می باشد. یعنی با توجه به نام یا همان کلید یا key آن، قابل دسترسی می باشد.

فرض کنید درخواستی به صورت عکس زیر در url فرستاده شده باشد. در این صورت خروجی متغیر GET با تابع var_dump چیزی به صورت زیر می باشد:

خروجی متغیر سوپر گلوبال $_GET
  • نصب ابزار Postman 

    برای ادامه این آموزش، نیاز دارید تا ابزار Postman را دانلود و نصب نمایید. شما می توانید با استفاده از این لینک دانلود، postman را نصب کرده و این آموزش را ادامه دهید.

    مراحل نصب postman مانند سایر نرم افزار های دیگر بوده و پیچیدگی خاصی ندارد. ضمن اینکه این ابزار، دارای extension برای گوگل کروم هم می باشد.

    شما با استفاده از افزونه آن می توانید آن را بر روی مرورگر کروم نیز نصب نموده و از آن استفاده کنید.

  • فرستادن درخواست با متد GET با استفاده از postman

    در قسمت قبل، شما ابزار postman را نصب کردید. حال می توانید به راحتی درخواست های GET یا POST خود را، بدون نیاز به کدهای اضافی، به سمت سرور فرستاده و نتایج را مشاهده کنید.

    در سمت راست postman، ناحیه کاری یا همان workspace شما موجود می باشد. شما می توانید در بخشی که در قبل از دکمه Send وجود دارد، نوع درخواست خود و همین طور url ای که قرار است درخواست را برای آن ارسال کنید، مشخص نمایید.

    از همان url ای که در مثال قبل استفاده کردیم، استفاده می کنیم. متد را بر روی GET قرار می دهیم. در زیر این بخش چندین تب وجود دارد که برای اضافه کردن داده های اضافی است، که شما می خواهید به درخواست خود اضافه کنید.

    در تب Params شما می توانید پارامتر های مورد نیاز خود را به صورت KEY و VALUE اضافه کرده و در درخواست خود بفرستید. عملا این بخش همانند فرستادن درخواست با query string عمل می کند.

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

    همان طور که می بینید، جواب درخواست دارای قسمت های body و Cookie و Header می باشد. در بخش body ، من قسمت preview را انتخاب کرده ام، تا نتیجه ای که در مرورگر نمایش داده می شود را، ببینم.

استفاده از postman برای فرستادن درخواست GET

متغیر $_POST در PHP

متغیر $_POST در PHP یکی از متغیرهای superglobal ای می باشد که به طور وسیعی در برنامه نویسی استفاده می شود. در بسیاری از موارد برای فرستادن داده های یک فرم HTML توسط کاربر به سمت سرور، از متد POST استفاده می شود.

برای دریافت این داده ها که با متد post به سمت سرور فرستاده شده، از متغیر سراسری $_POST باید استفاده کنیم. در واقع این متغیر مانند سایر متغیر های superglobal ، آرایه ای با فرم Associative می باشد. شما می توانید با استفاده از key آن ها، به value هر مقدار از آرایه دسترسی داشته باشید.

از متغیر فوق سراسری $_POST در فرستادن و پاس دادن متغیرها بسیار استفاده می شود.

  • فرستادن یک درخواست با متد POST توسط postman 

    این بار هم برای شبیه سازی ارسال یک درخواست با متد پست، مجددا از پست من استفاده می کنیم. در نظر داشته باشید که در سمت سرور و در اسکریپت نوشته شده، متغیر سراسری $_POST را در داخل تابع var_dump فراخوانی می کنیم تا محتوای متغیر $_POST در postman قابل مشاهده باشد.

    می توانید برای فرستادن این درخواست، یک تب جدید باز کنید یا در همان تب قبلی به کار خود ادامه دهید. برای اینکه در قسمت بعد می خواهیم متغیر سراسری REQUEST را مورد بررسی قرار دهیم، لذا من در همان تب و با همان مقادیر کوئری استرینگ، به این مثال ادامه داده ام.

    برای فرستادن داده ها با متد POST توسط postman ، در تب های زیر url درخواست، به بخش body بروید. بخش body خود دارای چند بخش در زیر مجموعه آن می باشد.

    از بین آن ها، form-data را انتخاب کرده و سپس مقادیری را که می خواهید با متد POST به سمت سرور بفرستید. در این بخش وارد کنید. درخواست پیش از فرستادن، چیزی مشابه با عکس زیر می باشد:

آموزش متغیر های superglobal با استفاده از postman
  • بررسی نتایج متغیرهای superglobal با متد POST در postman

    با فرستادن درخواست به سرور، عملا متغیر های username و همین طور id که در postman آن ها را تعریف کرده ایم، به سمت سرور فرستاده می شوند.

    از آن جایی که برای نمایش داده ها با متد post از var_dump استفاده کرده ایم، نتیجه خروجی، چیزی مشابه عکس زیر خواهد بود.

نتیجه درخواست با متد post در ابزار postman

متغیر  $_REQUEST در PHP

متغیر $_REQUEST در واقع یکی از آرایه های سوپر گلوبال در PHP می باشد که شامل ترکیبی از متغیر های سراسری $_GET و $_POST می باشد. در واقع هر دیتایی چه به صورت متد GET فرستاده شده یا چه به صورت متد POST فرستاده شده باشد، در داخل این متغیر موجود می باشد.

به عنوان مثال برای این حالت، می توانیم submit کردن یک فرم با متد post ای را مثال بزنیم، که در url خود از کوئری استرینگ نیز استفاده کرده است.

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

معرفی متغیر $_REQUEST یکی از متغیر های superglobal

متغیر $_FILE  در PHP

عموما برای فرستادن فایل به سمت سرور، از فرم ها استفاده می شود. اطلاعات مرتبط با فایل های فرستاده شده سمت سرور در متغیر $_FILE قرار می گیرد.

متغیر $_FILE یکی از متغیرهای superglobal می باشد که کاربرد زیادی در PHP دارد. متغیر $_FILE در واقع آرایه ای از فایل های فرستاده شده به سمت سرور می باشد. شما می توانید با استفاده از نام متغیر مورد نظر به آن دسترسی داشته باشید.

  • معرفی عناصر آرایه متغیر $_FILE 

    هر عنصر آرایه متغیر $_FILE ، به صورت key و value می باشد. عنصر key آن، نام متغیری است که از سمت client به سمت سرور فرستاده می شود.

    عنصر value خود مجددا یک Associative array می باشد. در واقع هر فایل فرستاده شده، دارای یک سری اطلاعات است که در 5 عنصر این آرایه قرار می گیرد.

    این عناصر شامل name و type و tmp_name و error و size آن می باشد. name معرفی نام واقعی فایل فرستاده شده می باشد. type در واقع بیانگر نوع این فایل یا همان MIME type آن می باشد.

    هر فایلی که به سمت سرور فرستاده می شود، به طور موقتی در مسیر در سرور شما، توسط وب سرور ذخیره می گردد. آدرس این مسیر و نام موقت آن در متغیر tmp_name قابل دسترسی خواهد بود.

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

    آخرین عنصر این آرایه نیز معرف size فرستاده شده می باشد. در بخش مرتبط با آپلود فایل ها در PHP به صورت کامل به شرح این موارد و کاربرد آن ها خواهیم پرداخت. فقط قصد این می باشد که شما با اجزای متغیر $_FILE آشنا شوید.

  • آپلود یک فایل با استفاده از postman و نمایش داده های متغیر $_FILE در آن

    برای نمایش آرایه متغیر $_FILE ، به جای استفاده از فرم، بار دیگر در این بخش از postman استفاده می کنیم. در بخشی که مرتبط با تعریف داده های form-data می باشد، شما می توانید نوع داده ارسالی خود را مشخص نمایید.

    این داده ها شامل دو دسته Text و File می باشد. در مثال های قبلی، ما از نوع Text استفاده کردیم. برای استفاده از نوع داده File کافی است با ماوس به محل تعریف KEY بروید و تیک مرتبط با file را بزنید.

    در این صورت باکس مرتبط با KEY و VALUE متناسب با حالتی که برای آپلود فایل است، تغییر شکل می دهد. برای این مثال نام فایل را image_1 گذاشتم و در بخش مرتبط با آپلود، عکسی را آپلود کردم.

    در سمت سرور نیز، برای نمایش متغیر $_FILE از آرایه های سوپر گلوبال پی اچ پی را در داخل var_dump قرار داده ام، تا بتوانم خروجی آن را مشاهده کنم. نتیجه چیزی مشابه با عکس زیر می باشد.

معرفی متغیر $_FILE در آرایه های سوپر گلوبال پی اچ پی

متغیر $_SERVER در PHP

یکی دیگر از متغیرهای superglobal بسیار کاربردی در PHP متغیر $_SERVER می باشد. متغیر فوق سراسری $_SERVER ، یک آرایه انجمنی می باشد شامل اطلاعاتی است که از طریق وب سرور در اختیار PHP قرار گرفته است. البته آرایه $_SERVER یک سری اطلاعات اضافی نیز در خود نگهداری می کند.

این اطلاعات شامل قسمت های مختلفی، از جمله اطلاعات مرتبط با header فرستاده درخواست، اطلاعات مرتبط با path ها و همین طور اطلاعات مرتبط به محل اجرای برنامه در سمت سرور می باشد.

متغیر تستک دارای اجزا بسیار متنوعی می باشد. در این بخش شما را با کاربرد برخی از این اجزا آشنا می کنیم:

  • متغیر $_SERVER[‘PHP_SELF’]

    این متغیر نام فایلی را که در حال حاضر در حال اجرای برنامه می باشد، بر می گرداند.

  • متغیر $_SERVER[‘SERVER_ADDR’]

    این متغیر IP آدرس سروری که در حال اجرای برنامه می باشد را بر می گرداند.

  • متغیر $_SERVER[‘SERVER_NAME’]

    این متغیر نام سروری که سایت روی آن هاست شده است را بر می گرداند.

  • متغیر $_SERVER[‘SERVER_SOFTWARE’]

    در واقع رشته شناسایی یا نوع یک وب سرور را بازگشت می دهد. این می تواند مثل یک رشته به صورت Apache/2.2.26 باشد.

  • متغیر $_SERVER[‘SERVER_PROTOCOL’]

    اسم و ورژن پروتکلی که وب سرور در حال حاضر با آن کار می کند (یا به درخواست ها پاسخ می دهد) بر می گرداند.

  • متغیر $_SERVER[‘REQUEST_METHOD’]

    نوع متدی که را که client برای درخواست خود انتخاب کرده است، بازگشت می دهد.

  • متغیر $_SERVER[‘REQUEST_TIME’]

    زمانی که درخواست به سمت سرور فرستاده شده است را بر حسب timestamp برگشت می دهد.

  • متغیر $_SERVER[‘QUERY_STRING’]

    در صورتی که درخواست به همراه کوئری استرینگ فرستاده شده باشد، query string مورد نظر  را بر می گرداند.

  • متغیر $_SERVER[‘HTTP_ACCEPT’]

    Accept هدری را که در درخواست فرستاده شده را باز می گرداند.

  • متغیر $_SERVER[‘HTTP_ACCEPT_CHARSET’]

    این متغیر character set ای را که در درخواست فرستاده شده و قابل قبول برای سمت کاربر می باشد را بر می گرداند.

  • متغیر $_SERVER[‘HTTP_HOST’]

    هدر مرتبط با هاست که مرتبط با درخواست فعلی می باشد، توسط این متغیر قابل دستیابی می باشد.

نمایش متغیر $_SERVER با استفاده از دستور var_dump
  • متغیر $_SERVER[‘HTTP_REFERER’]

    url کامل page مورد نظر را باز می گرداند (این مقدار در خیلی از موارد قابل اطمینان نیست، چون ممکن است توسط user-agent های مختلف پشتیبانی نشود)

  • متغیر $_SERVER[‘REMOTE_ADDR’]

    این متغیر، IP آدرس فرستنده درخواست را باز می گرداند.

  • متغیر $_SERVER[‘REMOTE_HOST’]

    این متغیر نام هاستی که درخواست کننده در آن، صفحه فعلی را باز کرده است و درخواست خود را فرستاده است، باز می گرداند.

  • متغیر $_SERVER[‘REMOTE_PORT’]

    پورتی که ماشین کاربر فرستنده درخواست از آن برای ارتباط با وب سرور سایت ما استفاده می کند، توسط این متغیر بازگشت داده می شود.

  • متغیر $_SERVER[‘SCRIPT_FILENAME’]

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

  • متغیر $_SERVER[‘SERVER_PORT’]

    پورتی که وب سرور بر روی سرور ما در حال سرویس دادن به درخواست ها می باشد، بر می گرداند.

  • متغیر $_SERVER[‘SERVER_SIGNATURE’]

    ورژن سرور و همین طور نام Virtual host ای که در حال رندر کردن صفحات سمت سرور می باشد را به ما باز می گرداند.

  • متغیر $_SERVER[‘SCRIPT_NAME’]

    این متغیر path اسکریپتی که در حال حاضر در حال اجرا می باشد را باز می گرداند.

  • متغیر $_SERVER[‘SCRIPT_URI’]

    این متغیر URI اسکریپتی که در حال اجرای برنامه است را باز می گرداند.

متغیر $_COOKIE در PHP

با استفاده از متغیر $_COOKIE می توانید به کوکی هایی که در مرورگر کاربر تنظیم شده است، دسترسی داشته باشید.

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

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

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

در بخشی جداگانه به صورت کامل به این مبحث در PHP خواهیم پرداخت. اما در حال حاضر نکاتی مربوط به آن را در زیر آورده ایم تا با این متغیر سووپر گلوبال در PHP بیشتر آشنا شوید.

  • نمایش و تنظیم COOKIE بر روی مرورگر با استفاده از chrome devtools

    برای اینکه ببینید چه کوکی هایی بر روی هاست مورد نظر و بر روی مرورگر شما ست شده است، می تواند از ابزار devtools مرورگر کروم استفاده کنید.

    برای این کار کافی بر روی صفحه مورد نظر بر روی مرورگر، کلیک راست کرده و گزینه inspect را انتخاب کنید. البته می توانید مستقیما با زدن دکمه های Ctrl + Shift + i نیز این ابزار را باز کنید.

    برای دیدن Cookie هایی که بر روی مرورگر شما ست شده است، ابتدا به تب Application بروید. در سمت راست، storage هایی که بر روی مرورگر شما موجود می باشد، نمایش داده شده است.

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

    برای تنظیم یک کوکی بر روی مرورگر خود، کافی است به راحتی بر روی ناحیه ای خالی در زیر اسم کوکی ها کلیک کرده، نام و مقدار کوکی خود را وارد نمایید.

    سپس کافی است صفحه را رفرش نمایید. در این صورت Cookie بر روی مرورگر شما، ست شده است. در عکس زیر، من دو Cookie با نام های user_id و همین طور user_name تنظیم کرده ام.

    در اسکریپتی که این صفحه را اجرا می کند روی متغیر$_COOKIE ، تابع var_dump را هم اجرا کردم، تا محتویات آرایه $_COOKIE در نتیجه هم نمایش داده شود. این مورد را می توانید در عکس زیر مشاهده نمایید.

نمایش متغیر $_COOKIE با استفاده از chrome devtools
  • ست کردن COOKIE با استفاده از postman و نمایش آن

    مشابه این کار را می توانید در postman هم انجام دهید. دقیقا در زیر دکمه Send برای فرستادن درخواست، یک گزینه با نام Cookie وجود دارد که با استفاده از آن می توانید برای درخواست خود Cookie ثبت کنید.

    با ثبت کردن کوکی توسط این بخش، هر بار که درخواست فرستاده می شود، به همراه این cookie ها، درخواست ارسال و دریافت می شود.

    برای این کار بر روی گزینه Cookie کلیک کنید. سپس هاست مورد نظر خود را اضافه کنید. در این مثال هاست مورد نظر من، localhost بوده است.

    حال با زدن دکمه Add Cookie در هاست مورد نظر، نام و مقدار و زمان مناسب برای کوکی خود را تنظیم نمایید. با انجام این کار، عملا با هر ارسال و دریافت، در هدر درخواست یا جواب، کوکی ها نیز فرستاده می شوند.

ست کردن Cookie با استفاده از postman

برای اینکه کمی مثال بهتر شود، بر روی اسکریپت مورد درخواست نیز، توسط دستور setcookie یک کوکی ست کردم تا در هنگام درخواست، به سمت مرورگر درخواست کننده ارسال گردد.

همان طور که می بینید، هر دو این مقدارها، در درخواست و دریافت در هدر موجود می باشند.

$cookie_name = "msn_cookie_sample";
$cookie_value = "mehdi_soltani_cookie";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
var_dump($_COOKIE);
نمایش متغیر $_COOKIE با استفاده از postman

متغیر $_SESSION در PHP

همان طور که پیش تر هم در بخش مرتبط با کوکی ها بیان شد، پروتکل http یک پروتکل stateless می باشد. بنابراین در صورتی که درخواستی مجددا از سمت کاربر به سرور ارسال شود، عملا وب سرور نمی تواند آن را شناسایی کند.

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

برای حل این مشکل می توانید از متغیر SESSION که  در سمت سرور ست می شود، استفاده کنید. البته در مورد مثال بالا، می توانید به راحتی از COOKIE هم استفاده نمایید.

با استفاده از متغیر $_SESSION می توانید یک نشست در سمت سرور برای یک کاربر ایجاد کنید. این باعث می شود که کاربر بتواند با حفظ اطلاعات خود، به صفحات مختلف سایت برود بدون اینکه وضعیت فعلی او، از دست برود.

به عنوان مثال می توانید برای نگهداری سبد کالا در یک فروشگاه اینترنتی، از این تکنیک یعنی آغاز یک session در سمت سرور، استفاده نمایید.

عملا برعکس COOKIE ها، این اطلاعات در سمت کامپیوتر یا دستگاه کاربر ذخیره نمی شود، بلکه این اطلاعات در سمت سرور ذخیره و نگهداری می شود.

در بخشی جداگانه به صورت کامل  مبحث $_SESSION در PHP خواهیم پرداخت. اما در حال حاضر نکاتی مربوط به آن را در زیر آورده ایم تا با این متغیر فوق سراسری در PHP بیشتر آشنا شوید.

  • نمایش و تنظیم SESSION سمت سرور در PHP

    برای اینکه یک SESSION در سمت سرور را برای یک درخواست فرستاده شده به آن، تنظیم یا ست نمایید، کافی است از دستور session_start در PHP استفاده کنید.

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

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

// Start the session
session_start();
$_SESSION['msn_user_session1'] = 'mehdi98987676111';
$_SESSION['msn_user_session2'] = 'mehdi98987676222';

var_dump($_COOKIE);
var_dump($_SESSION);
  • مقایسه نتایج برگشت داده شده بعد از ست شدن SESSION در مرورگر و postman

    برای بررسی نتایج، پس از تنظیم شدن و استارت SESSION سمت سرور، نتایج را با var_dump نمایش داده ایم. همان گونه که در عکس هم می بینید، نتایج تقریبا یکسان است، اما تفاوت کوچکی بین آن وجود دارد.

    وب سرور تشخیص می دهد که این دو درخواست، از دو بخش مجزا از هم، سمت سرور فرستاده شده است. بنابراین علاوه بر استارت کردن session برای هر کدام از آن ها سمت سرور، در هدر پاسخ به درخواست، از set-cookie استفاده می کند.

    این هدر که توسط وب سرور گذاشته می شود، باعث می شود که دو PHP session ID مختلف، بر روی دو دستگاه مخلتف تنظیم شود. از این به بعد، هر درخواست که سمت سرور فرستاده می شود، عملا این کوکی ها هم به سمت وب سرور فرستاده می شود.

    با ست کردن این کوکی ها در سمت کامپیوتر کاربر، وب سرور می تواند در سمت سرور به راحتی تشخیص دهد که درخواست از سمت کدام agent به سمت او فرستاده شده است.

    مقایسه PHPSESSID را در عکس زیر می توانید مشاهده کنید. برای اینکه کوکی ها هم در مرورگر و هم در برنامه postman قابل رویت باشد، متغیر Cookie را نیز با دستور var_dump فراخوانی کرده ایم.

    این دو تصویر بر روی هم گذاشته شده تا تفاوت آن ها را بهتر متوجه شوید.

مقایسه متغیرهای session با مرورگر و postman

متغیر $_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 ، از لینک های زیر استفاده شده است که برای مطالعه بیشتر، می توانید به آن ها مراجعه کنید:

راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:

شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید:

بازگشت به وبلاگ وبمستر وردپرس
متغیرهای superglobal در PHP چیست؟ آشنایی کامل با آرایه های فوق سراسری در پی اچ پی
5 (100%) 1 vote[s]