کار با کوکی session در PHP

در این آموزش موارد زیر را برسی خواهیم کرد:

  • ایجاد و استفاده از کوکی ها cookie در PHP
  • خواندن و حذف کوکی ها cookie در PHP
  • کاربرد و نحوه تعریف session در PHP

کوکی چیست ؟

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

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

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

مرورگر ها معمولا برای ایجاد و دخیره کوکی ها از کاربر سوال کرده و یا گزینه ای را جهت ایجاد آن قرار می دهند . پس از تایید کاربر اقدام به ایجاد و ذخیره کوکی ها می نمایند.

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

 

ایجاد کوکی ( cookie ) در PHP :

از تابع ( ) setcookie برای ایجاد و ذخیره یک کوکی در زبان PHP استفاده می شود . برای ایجاد یک کوکی تعیین چند چیز مهم است :

نام

مقدار

مدت زمان اعتبار *

* نکته: توجه داشته باشید که کوکی ها پس از یک مدت زمان تعیین شده ، اعتبار خود را از دست می دهند و باید دوباره فراخوانی شوند . در این حالت می گوییم ، کوکی expire شده است .

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

شکل کلی تعریف و ایجاد یک کوکی به وسیله تابع ( ) setcookie در PHP به صورت زیر است :

<?php

    setcookie ( name , value , expire , path , domain ) ;

?>

 

name: پارامتر name تعیین کننده نام کوکی است . از این نام برای بازیابی و فراخوانی کوکی در سطح برنامه استفاده می شود .

value: پارامتر value مقدار کوکی را تعیین می کند .این مقدار بر روی کامپیوتر ذخیره می شود .

expire: برای تعیین مدت زمان اعتبار کوکی ، معمولا از تابع ( ) time استفاده می شود .  پارامتر expire تعیین کننده مدت زمان اعتبار کوکی ، بر حسب ثانیه است . پس از اتمام این مدت زمان ، کوکی از بین خواهد رفت .

path: این پارامتر تعیین کننده مسیری بر روی سرور سایت است که کوکی در آن ، قابل دریافت و ذخیره است.

برای مثال اگر مقدار آن برابر با ‘/’ تعیین شود ، در تمام سایت قابل دسترسی است . اما اگر روی مقدار /en/’ تنظیم شود ، فقط در دایرکتوری en در سایت قابل دسترسی است .

تعیین این پارامتر اختیاری است.  

domain: پارامتر domain ، دامنه ای که کوکی بر روی آن قابل دسترس است را تعیین می کند.

برای مثال اگر مقدار آن ‘www.DeveloperStudio.ir’ تنظیم شود ، فقط در این دامنه قابل دسترسی است .

تعیین این پارامتر اختیاری است.

 

مثال های عملی :

در مثال های زیر نحوه ایجاد چند کوکی را با پارامترهای مختلف به شما نمایش داده ایم :

مثال ۱: در مثال زیر یک کوکی به نام info با مقدار Mehrdad را ایجاد کرده ایم ، که برای مدت یک ساعت ( ۳۶۰۰ ثانیه ) اعتبار دارد . به کد مثال دقت نمایید :

<?php

    setcookie ( " info ", " Mehrdad ", time( )+3600 ) ;
?>

مثال ۲ : در مثال دوم یک کوکی دیگر ایجاد کرده ایم ، که برای مدت یک سال اعتبار داشته ، ولی فقط در دامنه www.DeveloperStudio.ir اعتبار دارد :
<?php

    $ expire = time( ) + 60 * 60 * 24 * 30 ;

    setcookie ( " info2 ", " Developer ", $expire , 'www.developerstudio.ir' ) ;

?>


خواندن کوکی در PHP :

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

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

توسط متغیر سراسری COOKIE_$ در PHP و به وسیله نام کوکی ، می توان آن کوکی را خوانده و اطلاعات آن را استفاده نمود .

شکل کلی خواندن یک کوکی در PHP به صورت زیر است :

 

<?php

    $_COOKIE ( نام کوکی ) ;

? >

Example : خواندن یک کوکی به نام user

< ? php

    $_COOKIE ( user ) ;

?>

 

خواندن تمام کوکی های یک صفحه :

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

<?php

    print_r ( $_COOKIE ) ;

?>

 

حذف یک کوکی :

برای حذف یک کوکی از همان دستور setcookie که برای ایجاد آن استفاده کردیم ، استفاده می شود . با این تفاوت که برای حذف یک کوکی باید ۲ کار را انجام داد :

اول اینکه مقدار خالی به کوکی داده شود .

دوم اینکه زمان اعتبار کوکی را به زمانی قبل از زمان جاری برد . برای مثال ، اعتبار آن را به یک ساعت قبل برد .

برای مثال در کد زیر یک کوکی ایجاد شده به نام user را با دادن مقدار خالی و بردن اعتبار آن به زمان قبل ، از بین برده ایم :

 

<?php

    setcookie ( "user" , " " , time( )-3600 ) ;

?>

 

اگر مرورگر کوکی را پشتیبانی نکرد ، چه کنیم :

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

البته این نکته را هم ذکر کنیم که تمام مرورگر های مطرح امروزی از کوکی ها به طور کامل پشتیبانی می کنند .


مفهوم session :

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

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

اما در دنیای وب و اینترنت اوضاع فرق دارد . وب سرور سایتی که در حال بازدید از آن هستید ، نمی داند که شما کی هستید . زیرا آدرس HTTP مرورگر به سرور راجع شما اطلاعاتی نمی دهد . بنابراین تمایز کاربران با یکدیگر غیر ممکن شده و سرور با این وضع برای سرویس دهی به آنها دچار مشکل می شود . بنابراین باید چه کرد ؟ راه حل کجاست ؟

این مشکل در وب و در زبان PHP به وسیله session حل شده است .

سرور سایتی که وارد آن می شوید ، اطلاعات شما مثل username , pass را در متغیرهایی به نام session ذخیره می کند . هر بار که صفحه جدیدی از همان سایت را باز می کنید ، سرور اطلاعات session شما را به همراه درخواست صفحه به مرورگر ارسال کرده و بنابراین دیگر نیازی ندارید در هر صفحه اطلاعات کاربری خود را مجددا وارد نمایید .

این فرایند را تاکنون بارها تجربه کرده و باعث راحتی شما بوده است . اما session چگونه ایجاد و استفاده می شوند .

 

نحوه تعریف session بر روی سرور :

سرور سایت ، در لحظه ورود کاربر به سایت و وارد نمودن اطلاعات کاربری ، یک seesion با یک شناسه خاص ( unique ID – UID ) برای وی ساخته و اطلاعات وی را در آن session ذخیره می کند . این اطلاعات تا زمانی که کاربر در سایت است و یا اعتبار session از بین نرفته ، بر روی سرور ذخیره شده و در مرورگر به صورت کوکی تعریف شده اند .

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

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

 

اکنون پس از تعریف مفهوم seesion ، قصد داریم تا شما را با نحوه تعریف و استفاده از session در PHP ، آشنا نماییم .

 

نحوه تعریف session در PHP :

برای ایجاد session در یک صفحه PHP ، ابتدا باید تابع ( ) session_startup را قبل از تگ < head > در صفحه ، تعریف نمایید . به صورتی که در جدول زیر نمایش داده ایم :

این کد session کاربر را در سرور ثبت کرده ، به شما اجازه می دهد که عملیات session را شروع نموده و یک UID برای شما ایجاد می کند .

<?php  session_start( ); ?>

< html >

  < head >

  < /head >

  < body >

  < /body >

< /html >

پس از آماده نمودن مقدمات ، نحوه دستوری مقداردهی و سپس خواندن یک session در PHP را در جدول زیر در قالب یک مثال نمایش داده ایم . این روش روش استاندارد مقدار دهی و خواندن یک session در PHP است .

در مثال زیر یک session به نام views ، ابتدا مقدار دهی شده و سپس در درون صفحه بازخوانی شده است :

 

<?php  

session_start( )   ;

  // را مقدار دهی می کند session کد زیر یک

  $_SESSION [ 'views' ] = 1 ;

 ?>

< html >

  < head >

  < /head >

  < body >

    <?php

      // را می خواند session کد زیر مقدار

      echo " Pageviews = " . $_SESSION [ 'views' ] ;

    ?>

  < /body >

< /html >

 

مثال : در مثال دوم کدی طراحی شده است که به وسیله متغیر session به نام views ، تعداد دفعات مشاهده یک صفحه را نمایش می دهد . این دستود ابتدا مقدار این session را بررسی کرده و در صورتی که مقدار دهی نشده باشد ( یعنی کاربر اولین بار وارد صفحه شده است ) ، مقدار آن را برابر با ۱ قرار می دهد . اما اگر از قبل مقدار دهی شده باشد ، یعنی کاربر قبلا به صفحه سر زده است . بنابراین یک واحد به مقدار آن اضافه می کند :

<?php

  session_start( )   ;

  if ( isset ( $_SESSION [ 'views '] ) )

      $_SESSION [ 'views' ] = $_SESSION [ 'views' ] + 1 ;

  else

      $_SESSION [ 'views' ] = 1 ;

      echo "Views = " . $_SESSION [ 'views' ] ;

?>

 

به این مقاله چه امتیازی می‌دهید؟
امتیاز دهید

دیدگاه خود را بیان کنید

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

نشانی ایمیل شما منتشر نخواهد شد.

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

Shopping cart
There are no products in the cart!
question