کوکیها در PHP برای نگهداری اطلاعات متنی در مرورگر کاربر استفاده میشود. به لطف وجود کوکیهاست که پس از یک بار ورود به حساب ایمیل خود، دیگر نیازی به وارد کردن نام کاربری و رمز عبور در مراجعات بعدی نداریم. در این مقاله نحوه کار Cookie در PHP را فهمیده و ترفندهای استفاده از کوکی در PHP را یاد میگیریم.
مطمئناً تا به حال وارد سایتی شده و تنظیماتی مخصوص خودتان را روی آن اعمال کردهاید. پس از مدتی که دوباره به آن سایت مراجعه میکنید، میبینید که تمام تنظیمات شما همچنان وجود دارد.
همانطور که میدانید پروتکلهای تحت وب (نظیر HTTP)، پروتکلهای بدون وضعیت (یا Stateless) هستند. یعنی این پروتکلها وضعیت ارتباط را ذخیره نکرده و درخواستهای کاربران را از هم تفکیک نمیکنند. سرور سایتی که در حال دریافت خدمات از آن هستید، بین شما و سایر کاربران هیچ تفاوتی قائل نمیشود!
برای اینکه بتوان وضعیت کاربران را بین یک سایت و کاربر رد و بدل کرد، باید از ویژگیهای جانبی استفاده کنیم. برای این کار، هنگام ارسال درخواستها از مرورگر به سایت مورد نظر،
کوکی در PHP چیست ؟
احتمالاً تا به حال نام کوکی (Cookie) را شنیدهاید! کجا ؟ بله دقیقاً! کلوچههایی خوشمزه به نام کوکی! کلوچههای کوچک و شیرینی که معمولاً حاوی تکههای کاکائو و شکلات است! 🙂
کوکیها در فضای وب و کامپیوتر هم میتوانند به همین خوشمزگی باشند! کوکی در اصل یک فایل یا رشته متنی است. این متن نشاندهنده اطلاعاتی است که بهکمک آن وضعیت کاربر در سرور شناسایی میشود.

در اولین ارتباط سرور با کاربر، این اطلاعات توسط سرور ایجاد شده و برای مرورگر ارسال میشود. مرورگر آنها را در کامپیوتر ذخیره میکند.
پس از این اتفاق، هر بار که درخواست جدیدی از طرف کاربر برای سرور ارسال میشود، این اطلاعات (همان کوکیها) نیز به همراه درخواست، به سرور ارسال میشود.
اگر از قبل میدانید سشن در PHP چیست، میدانید که در سشنها اطلاعات را سمت سرور نگهداری میکنیم. با بسته شدن آخرین صفحه از سایت توسط کاربر، تمام اطلاعات از بین میرود.
اما در کوکیها، اطلاعات را سمت کاربر نگه میداریم. در نتیجه این اطلاعات تا زمان انقضا یا حذف توسط کاربر، باقی میمانند.
سشن در PHP : آموزش session در PHP با مثال
با Cookie در PHP چه اطلاعاتی را میتوان ذخیره کرد ؟
دادههایی که درون کوکیها ذخیره میشوند به صورت رشتههای متنی هستند. در نتیجه هر اطلاعاتی را که بتوان در قالب رشته نگهداری کرد، میتوانیم به کمک کوکیها در مرورگر کاربر نگه داریم.
ایجاد کوکی در PHP
برای ایجاد کوکی در زبان PHP از تابع setcookie() استفاده میشود. این تابع در تمام نسخههای PHP وجود داشته و میتوان از آن به راحتی استفاده کرد. (اگر نمیدانید تابع چیست، آموزش تابع در PHP را ببینید.)
setcookie( $name, $value, $expires, $path, $domain, $secure, $httponly );
این تابع 7 ورودی میگیرد که فقط آرگومان اول آن اجباری و بقیه اختیاری است. معمولاً برای ایجاد یک کوکی ساده، از سه آرگومان اول آن استفاده میشود اما با توجه به مورد کاربرد، میتوان از سایر آرگومانها نیز استفاده کرد.
آرگومانهای تابع تعریف کوکی
نام ($name) : این آرگومان اجباری بوده و نام کوکی مورد نظرمان را مشخص میکند. در ادامه به وسیله همین ویژگی، کوکی را بررسی کرده و محتویات آن را میخوانیم.
مقدار ($value) : دومین آرگومان مشخصکننده مقدار مورد نظر ما برای ذخیره در کوکی میباشد. وارد کردن آن اختیاری است؛ اما اکثراً نیاز داریم که برای کوکی خود مقداری در نظر بگیریم.
انقضا ($expires): این ورودی از نوع int بوده و یک عدد است. مشخص کننده زمان انقضای کوکیها در مرورگر کاربر است. پس از منقضی شدن کوکی در PHP، مرورگر آن را از روی کامپیوتر حذف کرده و دیگر آن را به سمت سرور ارسال نخواهد کرد.
مسیر ($path) : مشخصکننده مسیری از سایت است که کوکی در آن معتبر بوده و باید ارسال شود. اگر بخواهیم این کوکی در تمام سایت معتبر باشد، از علامت / استفاده کرده یا اصلاً آن را تعریف نمیکنیم.
دامنه ($domain) : دامنه سایتی که کوکی برای آن اعتبار دارد را مشخص میکند. اگر این آرگومان تعریف نشود، دامنه سایت ما (سایتی که برنامه PHP روی آن در حال اجراست) برای کوکی در نظر گرفته میشود.
امنیت ($secure) : این ورودی از نوع صفر و یک یا TRUE و FALSE است. اگر مقدار آن برابر TRUE باشد، کوکیها فقط در ارتباطات https برای سایت ارسال میشوند.
فقط پروتکل HTTP ($httponly) : این ورودی هم از نوع درست یا غلط است و اگر فعال باشد کوکی مورد نظر فقط در ارتباط HTTP ارسال میشود و در سایر ارتباطات که توسط جاوا اسکریپت یا سایر پروتکلها برقرار میشوند تبادل نخواهد شد.
ایجاد Cookie در PHP
تابع زیر را در ابتدا برنامه خود اجرا میکنیم.
setcookie( “email”, “user@gmail.com”, time() + 86400 );
پس از اجرای این یک خط، یک کوکی به نام email در مرورگر کاربر ذخیره میشود که مقدار user@gmail.com را دارا بوده و تا 24 ساعت اعتبار دارد.
معمولاً در مشخص کردن تاریخ انقضای کوکی از توابع کار با زمان در PHP استفاده میکنند. تابع time() زمان فعلی سیستم را به ثانیه نشان میدهد. ما مقدار آن را با 86400 ثانیه (معادل یک روز) جمع کرده و به عنوان زمان انقضای کوکی تعریف کردهایم.
بیایید از آرگومانهای بیشتری برای تعریف کوکی در PHP استفاده کنیم.
<?php
setcookie( “email”, “user@gmail.com”, time() + 86400 , “/college”, “https://sabzdanesh.com” );
کوکی حاصل از این قطعه کد، فقط در مسیر /college سایت معتبر بوده و در دیگر مسیرها برای سرور ارسال نمیشود. مثلاً اگر کاربر در همین صفحه حضور داشته باشد، ما به کوکی email او دسترسی نخواهیم داشت، چون چیزی برای سایت ارسال نشده است.
وقتی یک کوکی در PHP ایجاد میکنیم، محتوای آن هر چیزی میتواند باشد. یعنی حتماً نباید یک ایمیل در آن قرار دهیم، بلکه میتوان ترکیبی از چند دیتای مختلف که مورد نیازمان است را نیز ذخیره کنیم.





