برنامه‌نویسی

آموزش کار با Cookie در زبان PHP


۲۳ شهریور ۱۳۹۹
کار با cookie در زبان php

Cookie در زبان PHP، یک فایل با حداکثر اندازه 4KB است که توسط سرور بر روی کامپیوتر کاربر ذخیره می‌شود. در این مقاله چگونگی ساخت و فراخوانی Cookie یا تغییر مقادیر موجود در آن را آموزش خواهد دید. مواردی که در این مقاله به آنها می‌پردازیم به شرح زیر هستند:

  1. Cookie چیست؟
  2. ساخت Cookie
  3. فراخوانی مقادیر Cookie
  4. تغییر مقدار تعریف شده در Cookie
  5. حذف Cookie
  6. Session چیست؟

Cookie چیست؟

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

در شناسایی کاربران توسط Cookie سه مرحله وجود دارد:

  1. سرور مجموعه‌ای از Cookieها را به مرورگر کاربر ارسال می‌کند.
  2. مرورگر اطلاعات دریافت شده را برای استفاده‌های بعدی در خود ذخیره می‌کند.
  3. در دفعات بعد، هنگامی که کاربر درخواستی را به آن وب‌سرور ارسال کند، اطلاعات Cookie هم به سرور ارسال می‌شوند و به همین طریق، سرور از آن اطلاعات برای شناسایی کاربر استفاده می‌کند.
چگونگی کارکرد coockieها مابین کاربر و سرور

ساخت Cookie

در زبان PHP توسط تابع setcookie()، می‌توانیم Cookie مورد نظر خود را ایجاد کنیم. این تابع حداکثر شِش آرگومان دریافت می‌کند و البته باید افزود که برای ساخت هر Cookie، نیاز است این تابع به‌صورت جداگانه فراخوانی شود.

سینتکس تابع setcookie():

<?php
setcookie(Name, Value, [Expiry_Time], [Cookie_Path], [Domain], [Secure]);
?>
  1. مقدار Name اجباری است زیرا برای فراخوانی اطلاعات موجود که با این نام در آرایه $_COOKIE ذخیره شده‌اند، به مقدار Name نیاز خواهیم داشت.
  2. مقداردهی Value هم اجباری است. این مقدار دقیقا همان اطلاعاتی هستند که شما می‌خواهید آنها را در Cookie ذخیره کنید.
  3. [Expiry_Time] اختیاری است و برای تعریف زمان انقضای Cookie مورد استفاده قرار می‌گیرد. برای مقداردهی این مورد می‌توانید از تابع time() در زبان PHP استفاده کنید. برای مثال اگر بخواهید تاریخ انقضای Cookie را یک ساعت بعد از ساخت آن قرار دهید، می‌توانید به این صورت عمل کنید (time() + 3600). تاریخ انقضای پیش‌فرض برای هر Cookie، سی (30) دقیقه است.
  4. [Cookie_Path] نیز اختیاری است و برای تعیین مسیر Cookie در سرور استفاده می‌شود، مثلا / به این معناست که Cookie در تمام دامنه در دسترس خواهد بود. اگر شما این مقدار را برابر با subdirectoryها قرار دهید، دسترسی به Cookieها محدود به ساب‌دامنه‌ها می‌شود.
  5. [Domain] اختیاری است. از این مورد برای تعیین نام دامنه‌ای که Cookie بر روی آن قابل دسترس باشد، استفاده می‌کنند. تمام Cookieها فقط برای هاست و دامنه‌ای که در آن ایجاد شده‌اند، معتبر هستند. اگر شما این آرگومان را برابر با www.example.com قراردهید، Cookieها فقط در این ساب‌دامنه و تمام ساب‌دامنه‌های این ساب‌دامنه مانند w2.www.example.com در دسترس خواهند بود ولی اگر آن را برابر با example.com قراردهید، می‌توانید در تمام بخش‌های سایت به Cookieها دسترسی داشته باشید.
  6. [Secure] اختیاری است. اگر بخواهید تعیین کنید که Cookie از طریق پروتکل ایمن HTTPS ارسال شود باید این مورد را true قراردهید و یا برای ارسال Cookie از طریق پروتکل HTTP این مورد باید false باشد که به‌صورت پیش‌فرض نیز false است.

فراخوانی مقادیر Cookie

یک فایل با نام cookie.php ایجاد کنید و قطعه کد زیر را در آن قرار دهید:

<?php
//setcookie(name, value, expire);
setcookie('actor_name', 'joaquin phoenix', time()+30);
setcookie('age', '44', time()+30);
echo "The cookie has been set for 30 seconds";
?>
ساخت cookie با تابع setcookie() در زبان php
فایل cookie.php

حال یک فایل دیگر با نام view_cookie.php ایجاد کرده و بیایید مقدار موجود در Cookie را فراخوانی کنیم، برای این کار نیاز است از آرایه $_COOKIE استفاده شود.

<?php
$actor_name = $_COOKIE['actor_name'];
$actor_age = $_COOKIE['age'];
echo "$actor_name";
echo "$actor_age";
?>
بازیابی مقادیر موجود در آرایه $_COOKIE
فایل view_cookie.php

تغییر مقادیر تعریف شده در Cookie

برای تغییر مقدار یک Cookie فقط لازم است با تابع setcookie() مجددا با همان Name قبلی، مقدار جدید را وارد کنیم.

<?php
$cookie_name = "actor_name";
setcookie('actor_name', 'robert de niro', time()+30);
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
  echo "Cookie named ' . $cookie_name . ' is not set!";
} else {
  echo "Cookie '" . $cookie_name . "' is set! "; echo "actor name is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>

هنگامی که برای اولین بار صفحه را توسط مرورگر باز کنیم، پیام Cookie named ‘actor_name’ is not set! چاپ خواهد شد.

تغییر مقدار cookie در زبان php

یک بار صفحه را refresh کنید تا Cookie که ثبت شده به شما نشان داده شود.

حذف Cookie

برای حذف یک Cookie می‌توان به سادگی از تابع setcookie() استفاده کرده و زمان انقضای Cookie را برابر با گذشته قرار دهیم. مثلا در کد زیر، تاریخ انقضای Cookie را یک ساعت قبل از زمان فعلی قرار داده‌ایم.

<?php
$cookie_name = "actor_name";
setcookie('actor_name', 'robert de niro', time()-3600);
echo "Cookie named '" . $cookie_name . "' is deleted";
?>
حذف cookie در زبان php

Session چیست؟

در یک سایت ساده که فقط در آن از HTML استفاده شده، نمی‌توانیم داده‌ها را بین صفحه‌های مختلف انتقال دهیم. به‌عبارت دیگر، هنگام بارگیری یک صفحه جدید، تمام اطلاعات از بین می‌روند. Session این امکان را برای ما فراهم آورده‌ تا بتوانیم اطلاعات را در سرور ذخیره کرده و بعدا از آن استفاده کنیم.

یک session به‌عنوان یک متغیر سراسری یا global در سرور تعریف می‌شود و هرکدام از آنها دارای یک شناسه منحصربه‌فرد هستند که برای فراخوانی مقادیر ذخیره شده در سرور، استفاده می‌شوند. هرگاه که session ساخته شود، یک Cookie حاوی شناسه آن session در سیستم کاربر ذخیره شده و در هر درخواست برای سرور ارسال می‌شود. در مرورگرهایی که از Cookieها پشتیبانی نمی‌کنند، آن شناسه در URL با عنوان session-id نمایش داده می‌شود. در sessionها می‌توان داده‌های نسبتا زیادی را در مقایسه با Cookieها ذخیره کرد البته با بسته شدن مرورگر، مقادیر موجود در session به‌صورت خودکار حذف می‌شوند. برای ذخیره دائمی اطلاعات، باید داده‌های مورد نظر را در دیتابیس ذخیره کنیم. مشابه آرایه $_COOKIE، مقادیر session در آرایه $_SESSION ذخیره می‌شوند، علاوه‌براینها باید Session‌ها را قبل از تگ‌های HTML قرار دهیم.

امیدوارم از این مقاله لذت برده باشید و با تمرین آموزش‌های موجود، آنها را به‌خوبی درک کنید.

منبع: https://www.edureka.co/blog/php-cookies