PHP برای برنامه نویسان ASP.NET – قسمت سوم


خواندن قسمت اولقسمت دوم

کوکی ها در PHP

کوکی ها (Cookie) فایل های کوچکی هستند که اغلب برای شناسایی کاربران از آن ها در وب سایت ها استفاده می شود. هر بار که کاربر درخواستی به یک وب سایت می فرستد، فایل کوکی آن وب سایت نیز در صورت وجود فرستاده می شود. ASP.NET و PHP هر دو از کوکی ها به خوبی پشتیبانی می کنند اما مکانیزم کار کردن با آن ها کمی متفاوت است.

در PHP با استفاده از تابع setcookie می توان یک کوکی با مقادیر دلخواه بر روی کامپیوتر کاربر ایجاد کرد. این تابع دارای چندین پارامتر است که برخی از آن ها اختیاری است. لطفاً برای روشن تر شدن موضوع به مثال زیر توجه کنید :

<?php setcookie("myusername","imun22", time()+3600; ?>

در مثال بالا یک کوکی به نامmyusername ساخته می شود که مقدار imun22 را در خود ذخیره خواهد کرد. این کوکی یک ساعت بعد از بین خواهد رفت! برای اینکه PHP یک کوکی برای شما بسازد، باید آرگومان هایی را برای تابع setcookie مشخص کنید :

  • name : نام کوکی. شما بعداً برای دستیابی به اطلاعات این کوکی باید نامش را بدانید.
  • value : مقداری که کوکی باید در خود ذخیره کند. لطفاً اطلاعات حساس را در کوکی ذخیره نکنید!
  • expire : تاریخی که کوکی اعتبار خود را از دست خواهد داد و از کامپیوتر کاربر حذف خواهد شد.
  • path : مسیری بر روی سرور که این کوکی برای آن مسیر در دسترس خواهد بود. اگر این آرگومان را برابر ‹/› قرار دهید، کوکی در کل domain در دسترس خواهد بود. اگر به طور مثال برابر با ‹/sample/› قرار دهید، این کوکی فقط در دایرکتوری sample و زیر شاخه های آن قابل دسترس خواهد بود. اگر این آرگومان را ست نکنید، به طور پیش فرض کوکی فقط در دایرکتوری جاری قابل دسترس خواهد بود.
  • domain : دامینی که کوکی روی آن قابل دسترس خواهد بود. این آرگومان اختیاری است.
  • secure : یک مقدار بولین می گیرد و مشخص می کند که آیا کوکی باید بر روی یک ارتباط امن HTTPS انتقال یابد یا خیر. اگر برابر TRUE قرار گیرد، کوکی فقط زمانی ست خواهد شد که یک ارتباط امن وجود داشته باشد.
  • httponly : اگر برابر TRUE باشد، کوکی فقط بوسیله پروتکل HTTP قابل دسترس است. این بدین معنی است که زبان های اسکریپت نویسی مثل جاوا اسکریپت نمی توانند به کوکی دسترسی پیدا کنند.

اگر تابع setcookie با موفقیت یک کوکی را ایجاد کند، TRUE و در غیر این صورت FALSE برمی گرداند. به مثال زیر توجه کنید :

<?php
$TwoMonths = 60 * 60 * 24 * 60 + time();
setcookie('myuserinfo[username]', 'imun22', $TwoMonths);
setcookie('myuserinfo[lastvisit]', date("d/m/y"), $TwoMonths);
?>

در این مثال کوچک، نام کاربری و تاریخ آخرین مراجعه کاربر را در کوکی ذخیره کردیم. در واقع با این روش می توان به جای ذخیره کردن یک مقدار، با استفاده از آرایه ها چندین مقدار مختلف را در یک کوکی ذخیره نمود. مثال بالا در ASP.NET و سی شارپ کدی شبیه به کد زیر است :

HttpCookie cookie = new HttpCookie("myuserinfo");
cookie.Values["username"] = "imun22";
cookie.Values["lastvisit"] = DateTime.Now.ToShortDateString();
cookie.Expires = DateTime.Now.AddMonths(2);
Response.Cookies.Add(cookie);

البته این در صورتی است که فضای نام System.Net را using کرده باشید. همانطور که می بینید ASP.NET با کوکی ها به صورت یک کلاس برخورد می کند، در صورتی که در PHP این کار را یک تابع انجام می دهد.

دسترسی به مقادیر ذخیره شده در کوکی ها

ما در ASP.NET برای دسترسی به مقادیر ذخیره شده در یک کوکی از روش زیر استفاده می کنیم :

if (Request.Cookies["myuserinfo"]["username"] != null)
{
Response.Write(Request.Cookies["myuserinfo"]["lastvisit"]);
//do something else
}

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

<?php
if (isset($_COOKIE['myuserinfo'])) {
echo $_COOKIE['myuserinfo']['lastvisit'];
//do something else
}
?>

چطور یک کوکی را حذف کنیم؟

برای این کار شما باید تاریخ expire شدن کوکی را به زمان گذشته تنظیم کنید. این شبیه به همان کاری است که در ASP.NET هم انجام می دهیم. با این کار مروگر کاربر به صورت خودکار کوکی را حذف خواهد کرد.

<?php
setcookie("myuserinfo","", time()-3600);
?>

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

مشترک فراسان شوید! چطور مشترک شوید؟

farasun.wordpress.com

این مطلب ادامه دارد…

Advertisements