همه افرادی که با مرورگر کار می کنند، حتما و حداقل یکبار نام کوکی یا cookie را شنیده اند. در این مقاله قصد داریم به شما بگوییم که کوکی چیست و چگونه می توان از کوکی در Php استفاده کرد.
کوکی چیست؟
کوکی ها یک متغیر می باشند که بوسیله ی سرور به مرورگر وب ارسال می شوند. Cookie معمولا یک فایل متنی کوچک است که سرور روی کامپیوتر کاربر می گنجاند. نام Cookie بصورت خودکار به یک متغیر با نام مشابه اختصاص داده می شود. برای مثال ، اگر یک Cookie با نام “user” ارسال گردد، بطور خودکار یک متغیر با نام user$ ایجاد می شود که شامل مقدار کوکی می باشد.
cookie ها برای احراز هویت یک کاربر استفاده می شوند. کوکی ها در واقع یک فایل کوچک هستند که سرور روی کامپیوتر کاربر ذخیره می نماید. هر زمانیکه کامپیوتر کاربر یک صفحه را از طریق یک مرورگر وب درخواست می نماید، در واقع کوکی متناظر آنرا نیز ارسال می نماید. با استفاده از زبان PHP شما قادر خواهید بود مقادیر Cookie را ایجاد و استخراج نمایید. پیش از این درباره php چیست صحبت کرده ایم و موضوع ان از حوصله این مقاله خارج است.
برای درک بهتر عملکرد Cookie لطفا شکل ۱ را ملاحظه نمایید.
نحوه استفاده از cookies در Php
حال که با مفهوم کوکی یا cookies آشنا شده اید ،نحوه استفاده از کوکی در php را به شما توضیح خواهیم داد. در ادامه با ما همراه باشید.
طریقه ی ایجاد یک کوکی در php:
تابع ()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: مشخص کننده ی مسیر سرور کوکی می باشد که پارامتری اختیاری است. اگر آنرا برابر با “/” قرار دهیم، کوکی در تمام دامنه در دسترس خواهد بود. اگر بعنوان مثال آنرا برابر با “/test/” قرار دهیم، Cookie تنها در دایرکتوری test و تمام زیر دامنه های test در دسترس خواهد بود. مقدار پیش فرض آن دایرکتوری فعلی است که Cookie در آن قرار داده می شود.
Domain: بیانگر نام دامنه ی Cookie می باشد که پارامتری اختیاری است. بعنوام مثال برای در دسترس بودن Cookie در تمام زیر دامنه های yourdomain.com بایستی مقدار این پارامتر برابر با “.yourdomain.com” قرار داده شود. با قرار دادن مقدار آن برابر با www.yourdomain.com در واقع Cookie تنها در زیر دامنه ی www در دسترس خواهد بود.
Secure: مشخص کننده ی این امر است که آیا Cookie بایستی از یک ارتباط HTTPS امن ارسال گردد یا خیر و این پارامتر نیز اختیاری می باشد. ارزش True برای این پارامتر نشاندهنده ی این است که Cookie تنها هنگامی قرار داده می شود که یک ارتباط امن وجود داشته باشد. ضمنا مقدار پیش فرض آن False می باشد.
بیشتر بخوانید: سشن چیست
نکته: مقدار کوکی هنگام ارسال آن بصورت خودکار URL رمز شده خواهد بود و هنگام دریافت مقدار مذکور بطور خودکار رمزگشایی می گردد. پس برای جلوگیری از کد شدن URL به هنگام دریافت در پیاچپی ۵ می توانید از تابع ()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> …….
نحوه ی استخراج مقدار یک کوکی در php:
متغیر 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>
طریقه ی حذف یک کوکی در php:
برای حذف کوکی در php، کافی است زمان انقضای آنرا، زمان سپری شده قرار دهید. در واقع با بیان انقضای Cookie مشخص میکنید که آن حذف شده است. برای نمونه ، مثال ۳ زمان انقضای Cookie را یک ساعت قبل بیان میکند که به معنای حذف آن است:
مثال۳:
<?php Setcookie (“user”, “”, time() – ۳۶۰۰); ?>
نکته: در مثال ۳ با خالی گذاشتن مقدار Cookie در واقع تمامی مقادیر متناظر با نام Cookie “user” را حذف نمودیم.
چه راهکاری برای مرورگر هایی که از cookies پشتیبانی نمی کنند وجود دارد؟
اگر برنامه ی کاربردی شما با مرورگر وب کار میکند که از 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 قرار دارد، باشد).
<html> <body> <Welcome <?php echo $_POST["name"]; ?>.<br You are <?php echo $_POST["age"]; ?> years old </body> </html>
سوالات متداول
cookie ها برای احراز هویت یک کاربر استفاده می شوند. کوکی ها در واقع یک فایل کوچک هستند که سرور روی کامپیوتر کاربر ذخیره می نماید. هر زمانیکه کامپیوتر کاربر یک صفحه را از طریق یک مرورگر وب درخواست می نماید، در واقع کوکی متناظر آنرا نیز ارسال می نماید.