عمومی

تعریف و طریقه ی استفاده از Cookie ها در PHP

Cookie یک متغیر است که بوسیله ی سرور به مرورگر وب ارسال می گردد. Cookie معمولا یک فایل متنی کوچک است که سرور روی کامپیوتر کاربر می گنجاند. نام Cookie بصورت خودکار به یک متغیر با نام مشابه اختصاص داده می شود. برای مثال ، اگر یک Cookie با نام “user” ارسال گردد، بطور خودکار یک متغیر با نام user$ ایجاد می شود که شامل مقدار Cookie می باشد.

cookie-for-msn

  • Cookie چیست؟

 

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

شکل ۱: انتقال Cookie بین سرور و مرورگر وب کلاینت

 

  • طریقه ی ایجاد یک Cookie:

 

تابع ()setcookie برای ایجاد یک Cookie بکار می رود  به بیان بهتر تابع ()setcoomie یک HTTP Cookie را به یک کلاینت ارسال می نماید. Cookie بایستی قبل از ارسال هر خروجی به کلاینت اختصاص داده شود. این تابع ارزش True را در زمان موفقیت یا False را درهنگام شکست خواهد داشت.

نکته: تابع ()setcookie بایستی قبل از تگ  <html> ظاهر گردد.

  • نحوه ی استفاده از تابع ()setcookie:

 

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

name: نام Cookie می باشد. شما از این نام بعدا برای استخراج Cookie  استفاده خواهید نمود، پس آنرا فراموش نکنید.

Value: مقدار متناظر با Cookie می باشد که داخل آن ذخیره می گردد. مقادیر معمول Cookie شامل نام کاربری (از نوع داده ی رشته ای) و آخرین بازدید (از نوع داده ی تاریخ) می باشد.

Expire: بیانگر زمانی است که Cookie منقضی می گردد. ضمنا قرار دادن این پارامتر اختیاری می باشد و اگر مقداری برای آن قرار داده نشود یا مقدار آن برابر صفر انتخاب گردد، Cookie در پایان session (هنگامیکه مرورگر بسته می شود) منقضی میگردد.  این پارامتر بر حسب ثانیه می باشد،  بعنوان مثال time()+3600*24*30 کوکی را ۳۰ روز بعد از زمان فعلی منقضی می نماید.

Path: مشخص کننده ی مسیر سرور Cookie می باشد که پارامتری اختیاری است. اگر آنرا برابر با “/” قرار دهیم، Cookie در تمام دامنه در دسترس خواهد بود. اگر بعنوان مثال آنرا برابر با “/test/” قرار دهیم، Cookie تنها در دایرکتوری test و تمام زیر دامنه های test در دسترس خواهد بود. مقدار پیش فرض آن دایرکتوری فعلی است که Cookie در آن قرار داده می شود.

Domain: بیانگر نام دامنه ی Cookie می باشد که پارامتری اختیاری است. بعنوام مثال برای در دسترس بودن Cookie در تمام زیر دامنه های yourdomain.com بایستی مقدار این پارامتر برابر با “.yourdomain.com” قرار داده شود. با قرار دادن مقدار آن برابر با www.yourdomain.com در واقع Cookie تنها در زیر دامنه ی www در دسترس خواهد بود.

Secure: مشخص کننده ی این امر است که آیا Cookie بایستی از یک ارتباط HTTPS امن ارسال گردد یا خیر و این پارامتر نیز اختیاری می باشد. ارزش True برای این پارامتر نشاندهنده ی این است که Cookie تنها هنگامی قرار داده می شود که یک ارتباط امن وجود داشته باشد. ضمنا مقدار پیش فرض آن False می باشد.

نکته: مقدار Cookie هنگام ارسال آن بصورت خودکار  URL رمز شده خواهد بود و هنگام دریافت مقدار مذکور بطور خودکار  رمزگشایی می گردد. پس برای جلوگیری از کد شدن URL به هنگام دریافت در PHP 5 می توانید از تابع ()setrawcookie به جای تابع ()setcookie استفاده نمایید.

در مثال زیر ، یک Cookie با نام “user” ایجاد نموده  و مقدار    “Reza Madadi”را به آن اختصاص می دهیم. همچنین مدت زمان اعتبار Cookie را نیز ۲۰ دقیقه تعریف می نماییم.

مثال ۱:

<?php

Setcookie(“user”, “Sajad Bakhtyari”, time() + (20*60));

?>

<html>

…..

شما می توانید زمان انقضای Cookie را مانند مثال ۲ تعریف نمایید:

مثال ۲:

<?php

$expire=time() + (60*20);

Setcookie(“user”, “sajad bakhtyari”, $expire);

?>

<html>

…….

  • نحوه ی استخراج مقدار یک Cookie:

 

متغیر COOKIE_$ در زبان PHP برای استخراج مقدار یک Cookie بکار می رود. البته متغیرهای superglobals مانند COOKIE_$  از نسخه ی  PHP 4.1.0 به بعد در دسترس می باشند و در نسخه های پایینتر می توانید از متغیر REQUES_$ برای دسترسی به مقدار Cookie استفاده نمایید.

در مثال زیر مقدار Cookie با نام “user” را استخراج نموده سپس با استفاده از تابع ()echo آنرا نمایش خواهیم داد.

<?php

Echo $_COOKIE[“user”];

?>

در مثال زیر از تابع ()isset برای بررسی وجود یا عدم وجود Cookie استفاده شده است:

<html>

<body>

<?php

If (isset ($_COOKIE[“user”]))

Echo “Welcome”.” “.$_COOKIE[“user”].”!<br>”;

else

echo “welcome Guest!<br>”;

?>

</body>

</html>

  • طریقه ی حذف یک Cookie:

 

برای حذف یک Cookie، کافی است زمان انقضای آنرا، زمان سپری شده  قرار دهید. در واقع با بیان انقضای Cookie مشخص میکنید که آن حذف شده است. برای نمونه ، مثال ۳ زمان انقضای Cookie را یک ساعت قبل بیان میکند که به معنای حذف آن است:

مثال۳:

<?php

Setcookie (“user”, “”, time() – ۳۶۰۰);

?>

نکته: در مثال ۳ با خالی گذاشتن مقدار Cookie در واقع تمامی مقادیر متناظر با نام Cookie “user” را حذف نمودیم.

  • راهکارهای جایگزین Cookie در مرور گرهایی که از Cookie ها پشتیبانی نمی نمایند:

 

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

از طریق فرم زیر ابتدا کاربر داده هایش را وارد نموده سپس با کلیک روی گزینه ی “Submit” داده های مذکور به صفحه ی welcome.php انتقال داده می شود.

<html>

<body>

<form action=”welcome.php” method=”post”>

Name: <input type=”text” name=”name”>

Age: <input type=”text” name=”name”>

<input type=”submit”>

</form>

</body>

</html>

نمونه ای از کدهای PHP جهت استخراج اطلاعات Cookie بصورت زیر می باشند (این فایل بایستی با نام “welcome.php” و در همان پوشه ای که فایل form قرار دارد، باشد).

 

 

[pre]

<html>

<body>

<Welcome <?php echo $_POST[“name”]; ?>.<br

You are <?php echo $_POST[“age”]; ?> years old

</body>

</html>

[/pre]

منابع:

سایت w3schools

سایت php.net

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

همین حالا رایگان عضو شوید

مدیر بلاگ

مشخصات مدیر

نوشته های مشابه

‫۲ نظرها

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

    نکته:
    کلمه زیر را در صفحه جستجو کنید و تصحیح کنید. فکر کنم اشتباه تایپی است. موفق باشید
    setcoomie

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

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

دکمه بازگشت به بالا
بستن
بستن