همه افرادی که با مرورگر کار می کنند، حتما و حداقل یکبار نام کوکی یا cookie را شنیده اند. در این مقاله قصد داریم به شما بگوییم که کوکی چیست و چگونه می توان از کوکی در Php استفاده کرد.
کوکی چیست؟
کوکیها متغیرهایی هستند که توسط سرور به مرورگر وب ارسال میشوند. کوکی معمولاً یک فایل متنی کوچک است که سرور روی کامپیوتر کاربر ذخیره میکند. نام کوکی به طور خودکار به یک متغیر با نام مشابه اختصاص داده میشود. برای مثال، اگر یک کوکی با نام “user” ارسال شود، به طور خودکار یک متغیر به نام user$ ایجاد میشود که شامل مقدار کوکی است.
کوکیها برای احراز هویت کاربر استفاده میشوند. آنها در واقع فایلهای کوچکی هستند که سرور روی کامپیوتر کاربر ذخیره میکند. هر زمان که کامپیوتر کاربر یک صفحه را از طریق مرورگر وب درخواست میکند، کوکی متناظر نیز ارسال میشود. با استفاده از زبان PHP میتوانید مقادیر کوکی را ایجاد و استخراج کنید. پیشتر درباره زبان برنامهنویسی PHP و مزایا و کاربردهای آن صحبت کردهایم و این موضوع از حوصله این مقاله خارج است.
نحوه استفاده از 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() – ۳۶۰۰); ?>
به شما پیشنهاد می شود برای کسب اطلاعات در حوزه Cakephp چیست مقاله ما را مطالعه نمایید.
نکته: در مثال ۳ با خالی گذاشتن مقدار 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>
امیدوارم این مقاله برای شما مفید واقع شده باشد با تشکر از همراهی شما تا پایان این مقاله.