تعداد بازدید: 2935

Cookie و Session در php

زمانی که بحث ذخیره اطلاعات که مطرح میشه ما امکاناتی برای ذخیره اطلاعاتمون داریم:

  • پایگاه داده (DataBase)
  • فایل ها (Files)
  • کوکی ها (cookie)
  • نشست ها (session)

از نظر امنیت و پایداری داده ها موارد فوق تفاوت هایی با هم دارند . به طور مثال امنیت داده ها در کوکی پایین و در پایگاه داده بالا است.پایداری اطلاعات در session ها تا پایان session می باشد و پس از آن از بین می رود و در کوکی ها تا زمان انقضای تعیین شده از سوی برنامه نویس است ولی ماندگاری اطلاعات در پایگاه داده تا زمان بقای آن(پایگاه داده) می باشد.

کوکی ها (cookies) در php

کوکی ها در مرورگر کاربر ذخیره می شود و کاربر نیز به آن دسترسی دارد از این رو نباید داده های حساس را در کوکی ذخیره کرد (ضمن اینکه کوکی ها زمان انقضا دارند)

ساخت cookie :

سه پارامتر مهم در زمان ساخت کوکی مطرح می شود:

  • name : نام کوکی که index متغیر سراسری COOKIE می شود.
  • content : محتوای کوکی.
  • expire_time : زمان انقضا که باید به وسیله timestamp اعلام شود.

تابع setcookie به شرح زیر است :

<?php setcookie($name , $content , $expire_time); ?>

در صورت این که روی یک پروژه بزرگ کار می کنید می تونید یه سری زمان های انقضای پیش فرض برای برنامه تون تعریف کنید(مثل وردپرس) :

<?php
define( 'MINUTE_IN_SECONDS', 60 );
define( 'HOUR_IN_SECONDS',   60 * MINUTE_IN_SECONDS );
define( 'DAY_IN_SECONDS',    24 * HOUR_IN_SECONDS   );
define( 'WEEK_IN_SECONDS',    7 * DAY_IN_SECONDS    );
define( 'MONTH_IN_SECONDS',  30 * DAY_IN_SECONDS    );
define( 'YEAR_IN_SECONDS',  365 * DAY_IN_SECONDS    );
?>

دسترسی به cookie :

برای دسترسی به cookie ها باید از طریق متغیر سراسری $_COOKIE اقدام کرد.

<?php $_COOKIE[$name]; ?>

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

پاک کردن cookie :

برای پاک کردن دائمی یک cookie کافیه ابتدا اون رو unset کنید(از بین رفتن content) و در مرحله بعد برای از بین بردن cookie اون رو با یک زمان انقاضای منفی تعریف کنید:

<?php
unset($_COOKIE[$name]);
$res = setcookie($name, '', time() - 3600);

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

نکته : کوکی ها توسط Http Headers میان سرور و کلاینت جا به جا می شوند. به صورتی که زمانی که در کدهای خود از set_cookie استفاده می کنیم در هدر Response به کلاینت می فهمانیم که فلان کوکی را در خود ذخیره کن و همچنین وقتی get_cookie در کد ها استفاده می کنیم یعنی از کوکی هایی که در هدر Request به سمت سرور آمده استفاده میکنیم.

نکته : چون ذخیره کوکی در ارتباط مستقیم با Http Headers می باشد لذا قبل از چاپ هر گونه خروجی باید از آن استفاده کنیم.

نشست ها یا session در php

برخلاف cookie ها که در مرورگر کاربر ذخیره می شدند session ها در سرور ذخیره می شوند. نشست یعنی امکان ذخیره سازی یک سری اطلاعات به محض شروع نشست تاپایان نشست.

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

به عبارت کلی SESSION یعنی جابه جایی یه سری متغیر ها همراه با جابه جایی کاربر در میان صفحات. که تفاوتشون با متغیر های عادی اینه که ریست نمیشن و از این رو بسیار کاربردی هستند.

نکته : نشست ها در زمان تعیین header ها شروع می شوند . پس باید قبل از هر خروجی در اسکریپت شروع شوند .

شروع نشست :

قبل از هر خروجی با تابع session_start() اتفاق می افتد.

<?php session_start(); ?>

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

با استفاده از متغیر سراسری $_SESSION و با یک نام انجام می پذیرد.

<?php $_SESSION[$name]; ?>

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

پایان نشست :

با تابع session_destroy() اتفاق می افتد.

<?php session_destroy(); ?>

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

 

مطالب مشابه

افزونه CURL در PHP

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

composer یک ابزار رابط خط فرمان (command line interface) برای مدیریت و نصب پروژه های PHP می باشد. بوسیله آن می توان روی پروژه خود پکیج هایی (پروژه ها یا کتابخانه ها) را نصب کنید یا بالعکس پروژه خود را قابل نصب بر روی پروژه های دیگر کنید.

Composer (قسمت اول)

composer یک ابزار رابط خط فرمان (command line interface) برای مدیریت و نصب پروژه های PHP می باشد. بوسیله آن می توان روی...

هدر های Http در درخواست و پاسخ

Http Headers (قسمت سوم)

Http Request و Http Response درخواست و پاسخ بر اساس پروتکل Http می باشند و می توان از این ها برای ارتباط میان نرم افزار...

namespace rational in php

منطق Namespace در PHP

دوتابع با نام یکسان Fatal Error است. برای جلوگیری از این خطا می توانید یک prefix ابتدای نام تابع بنویسید تا احتمال...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Cookie و Session در php

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *