متغیر های superglobals در php

سلام دوستان در این مقاله ما می ریم و سری می زنیم به سوپر گلوبال ها در php و اقدام به آموزش اونا به صورت کامل به شما می کنیم

ما در این مقاله با متغیر های بسیار جهانی مانند $_GET و $_POST و $_SERVER و $_REQUEST و $_SESSION و $_COOCKIE و $_ENV و $GLOBAL آشنا می شیم

نکته: در صورتی که نیازمند قرار گرفتن آموزش خاص و یا مطلبی به صورت رایگان در حوزه های حسابداری و کامپیوتر هستید آن را در قسمت نظرات همین صفحه وارد کنید.

سلام دوستان. در این قسمت از آموزش های php ما میریم سراغ یادگیری مبحث سوپرگلوبال ها (superglobals) در php که به زبان فارسی می شه متغیر های خیلی جهانی.

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

قطع به یقین اگر شما سابقه کارکردن با php رو داشته باشید با برخی از این ها آشنایی دارید. به طور مثال اگر شما اقدام به دریافت مقادیر داخل فرم های html کرده باشید با سوپرگلوبال (superglobal) که نام آن POST_$ هست آشنایی دارید.

یا اگر اقدام به سایت سیستم مدیریت کاربران کرده باشید با متغیر SESSION_$ آشنایی خواهید داشت. GET_$ هم که دیگه کسی نیست که نشناستش

اسامی کامل این متغییر های پرکاربرد که از نسخه php 4.1.0 معرفی شدند به صورت زیر هست

  • $_GET
  • $_POST
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION
  • $_SERVER
  • $_REQUEST
  • $GLOBALS

 

توجه: همیشه متغیر های سوپرگلوبال با حروف بزرگ نوشته می شوند

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

متد GET_$ در php چیست

خب از اونجایی که خیلی از شما سابقه کار با این متغیر رو دارید خیلی خلاصه میگم. superglobal که $_GET هست میاد و اطلاعات جاسازی شده در یک url رو برای ما چاپ میکنه. که البته به صورت آرایه این مقدار داخلش ذخیره می شه.

url = https://aryatehran.com/posts.php?id=1  // یک آدرس وب


ما میتونیم مقداری که برابر با حرف id در url هست رو در php دریافت کنیم. همچنین می تونیم که چند تا مقدار داخل url جاسازی کنیم. به صورت زیر

url = https://aryatehran.com/posts.php?id=1  // یک آدرس وب

// posts.php file

echo $_GET['id']; // output = 1

--------------------------------------------

url = https://aryatehran.com/posts.php?id=1&track=true // یک آدرس وب

// posts.php file

echo $_GET['id']; // output = 1
echo $_GET['track']; // output = true

متد POST_$ در php چیست

$_GET و $_POST هر دو یک روش برای ارسال اطلاعات هستند. به طور مثال ما در مثال بالا دو مقدار id و track رو همراه با مرورگر به آدرس post.php فرستادیم. اما متد $_POST یه جور دیگه عمل میکنه و غالبا برای دریافت اطلاعات فرم ها در html به کار می ره به مثال زیر توجه کنید.

// form.html page
<form action="post.php" method="post">

    <input type="text" name="test" placeholder="just input">
    <input type="submit" name="submit" value="submit">

</form>

// post.php

// ابتدا چک می کنیم که روی دکمه تایید در فرم بالا کلید شده یا خیر
if(isset($_POST['submit'])){ 
echo $_POST['test'];  // خروجی میشه هرچیزی که داخل اون فرم نوشته بودید
}

// نکته : حتما باید فایل فرم شما در پوشه ای باشد که فایل پی اچ پی شما در آن هست. در غیر این صورت باید اکشن فرم خود را به مسیر فایل پی اچ پی خود تغییر دهید

 

FILE_$ در php چیست

شاید شما نیاز داشته باشید که همراه با فرم خودتون یک فایل مانند یک عکس نیز بفرستید. برای این کار در html علاوه بر آنکه باید یک input با type=file داشته باشید باید به تگ فرم خودتون خاصیت(attribute) را enctype= multipart/form-data اضافه کنید. تا بتونید از این superglobal برای دریافت فایل در php و آپلود آن استفاده کنید.

به طور مثال کد زیر اقدام به دریافت فایل با استفاده از $_FILE می کنه. اطلاعات اون فایل مثل حجم، مسیر ذخیره شدن فایل، نوع فایل و کلی دیگه رو میگیره که با اجرای کد زیر می تونید بهش دسترسی پیدا کنید.

// html file
<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

// upload.php file

if(isset($_POST["submit"])) {
echo '<pre>'
print_r($_FILE['fileToUpload']); // زمانی که این اجرا بشه اطلاعات زیادی رو از فایلی که داخل فرم قرارگرفته شده به صورت منظم می بینید.
echo $_FILE['fileToUpload']['size']; //حجم فایل انتخابی رو برای شما میاره که البته اطلاعات دیگری هم هست که شما می تونید به صورت روبه رو بهش دسترسی پیدا کنید 
}

SESSION_$ در php چیست

$_SESSION هم که دیگه خودتون میدونید. برای ذخیره یک سری اطلاعات روی مرورگر تا زمانی که مروگر شما بازه یا زمان دلخواه استفاده می شه. عمدتا هم برای سیسستم های عضویت و سبد خرید ها مورد استفاده قرار میگیره.

به طور مثال ما دوتا فایل داریم که در یکی از اون ها اقدم به ذخیره یک مقدار در $_SESSION می کنیم و در یک فایل دیگه میتونیم بهش دسترسی پیدا کنیم. به صورت زیر:

// fileOne.php
session_start();

$_SESSION['test'] = 'aryatehran.com';

// ابتدا این فایل را اجرا کنید


//fileTwo.php
session_start();

echo $_SESSION['test']; // output = araytehran.com

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

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

// برای حذف یک سشن خاص
unset($_SESSION['test']);

// حذف تمامی سشن ها
session_destroy();

 

COOKIE_$ در php چیست

کوکی های هم مانند سشن ها اقدام به ذخیره سازی یک مقدار داخل مرورگر منتها به صورت طولانی تر می کنند. کاربرد کوکی ها را با یک مثال توضیح می دهم.

احتمالا شما هنگام ورود به یک سایت گزینه من را به یاد آور را دیده اید و زمانی که تیک آن گزینه را زدید. تا چند ماه زمانی که وارد آن سایت می شوید به صورت لاگین شده باقی می مانید.

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

کاربرد COOCKIE ها و SESSION ها در PHP و طراحی سایت بسیار وسیع است و نوع استفاده از آن ها کاملا بستگی به خود شما دارد.

اما برای ساخت coockie و دسترسی به آن باید به صورت زیر عمل کنید.

setcoockie(name, value, expire, path, domain, secure, httponly);


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

name: نام کوکی جدید که قصد تعریف آن را داریم // الزامی

value: مقداری که می خواهیم در کوکی مورد نظرمان ذخیره شود // الزامی

expire: مدت زمانی که کوکی پس از آن متقضی خواهد شد (بر حسب ثانیه) // الزامی

path: تعیین مسیر ذخیره کوکی در سرور //الزامی

domain: تعیین اینکه کوکی در چه دامینی در دسترس باشد //اختیاری

secure: تعیین اینکه آیا کوکی فقط در ارتباطات امن در دسترس باشد یا خیر //اختیاری

httponly: مشخص می کنه که آیا فقط در دامنه های اچ تی تی پی در دسترس باشه یا خیر //اختیاری


// خب ما یک کوکی می سازیم و در یک فایل دیگه بهش دسترسی پیدا می کنیم

// fileOne.php

$cookie_name = "test";
$cookie_value = "aryaterhan";
setcookie($cookie_name, $cookie_value, time() + (86400 * ۳۰), "/"); // ۸۶۴۰۰ = ۱ day  || "/" ست شدن در تمامی دامنه

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

//fileTwo.php

echo $_COOKIE['test']; // output = aryatehran


همچنین برای حذف کوکی به صورت زیر اقدام میشه به این صورت که باید دوباره اون کوکی تنظیم بشه منتهی با زمان معکوس

setcookie("test", "aryatehran", time() - 3600, '/'); //تاریخ انقضای کوکی به یک ساعت قبل تغییر کرده و در نهایت نابود می شود

 

SERVER_$ در php چیست

بگذارید قبل از توضیح این سوپر گلوبال این موضوع رو مطرح کنم. $_SERVER دقیقا همون چزیزی هست که نیاز دارید! چطور؟

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

echo $_SERVER['REMOTE_ADDR'];

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

echo $_SERVER['HTTP_USER_AGENT'];

البته این مورد نیازمند یه خورده یادگیری عمیق تر داره. لیست اطلاعاتی که $_SERVER در php می تونه به شما بده رو میتونید در آدرس زیر ببینید. در سایت w3schools

این مقاله ادامه دارد

REQUEST_$ در php چیست

$_REQUEST هم هیچ چیز خاصی نداره جز اینکه به طور مثال شما در مثال $_POST یا دومین superglobal می تونید به جای $_POST  اقدام به جایگذاری $_REQUEST کنید.

در واقع $_REQUEST در بر گیرنده مقادیر $_POST و $_GET و $_COOCKIE در php می باشد.

ENV_$ در php چیست

GLOBAL$ در php چیست