نحوه استفاده از کوکی ها در PHP

daskhatmin فواد طهماسبی
20,039 بازدید
نحوه استفاده از کوکی ها در PHP

کوکی چیست ؟

کوکی  یک فایل سیستمی می باشد که نشان دهنده موقعیت کاربر در یک وبسایت است. این فایل در کامپیوتر کاربر ذخیره می شود. زمانی که شما وبسایتی را مشاهده می کنید یک کوکی در مرورگرتان ذخیره می شود که اطلاعات ورود شما و غیره در آن وجود دارد، بار دوم که کاربر وبسایت را مشاهده می کنید نیازی به ورود مجدد به صورت دستی ندارد، در عوض با استفاده ازکوکی ها به طور خودکار شناسایی می شوید. بوسیله PHP می توان کوکی ها را ایجاد کرد،  خواند و از بین برد.

تفاوت اصلی کوکی و session در این است که کوکی ها در کامپیوتر کاربر ذخیره می شود اما session در سرور ذخیره می شود. کوکی ها را می توان به صورت دستی حذف کرد که این کار از نظرامنیتی امری درست نیست.

چرا ما از کوکی ها استفاده می کنیم ؟

در یک فایل کوکی می توان اطلاعات و تنظیمات کاربر را در 4000 کاراکترذخیره سازی کرد. برخی از کاربردهای کوکی در زیر بیان شده است :

  • برخی از وبسایت ها صفحات سفارشی و نتایج مختلفی متناسب با هر کاربر ارائه می دهند. این اطلاعات را می توان از داده های ذخیره شده در کوکی به دست آورد..
  • برخی از وبسایت ها از کوکی ها برای ورود کاربران به صورت خودکار به وبسایت استفاده می کنند. با ذخیره اطلاعات کاربر در کوکی می توانند آنهارا بطور خودکار اعتبار سنجی کنند و در زمان کاربر برای ورود صرفه جویی کنند.
  • سایت های آماری از کوکی ها برای پیگیری کاربران خود استفاده می کنند. با استفاده از کوکی یک کاربر بیش از یک بار در وبسایت مورد شمارش قرار نمی گیرد و آمار کاربران را به صورت منحصر به فرد می توان به دست آورد.

امنیت کوکی ها :

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

اگر وبسایت از کوکی برای ذخیره کلمه عبور استفاده کند این کلمه عبور قابل خواندن است که یک تهدید برای هک شدن می توان در نظر گرفت. اما اگر همان پسورد را با استفاده از روش هایی مانند hash کد گذاری کنیم به نسبت قبل امنیت آن بالا می رود.

چگونگی نوشتن (تنظیم) کوکی :

در PHP ، یک تابع به نام ()setcookie وجود دارد که برای set  و unset  کردن کوکی استفاده می شود. نحوه استفاده از این تابع به صورت زیر است :

نحوه دستوری :

setcookie("name", "value", expire, "path", "domain");

Name: نام کوکی شما
Value: مقدار یا ارزشی که در کوکی ذخیره می شود. مانند : نام کاربری , کلمه عبور, ...
Expire: زمان انقضای کوکی.ه 
Path: مسیر وبسایت که کوکی برای آن معتبر است.
Domain: وبسایتی که کوکی برای آن معتبر است.

مثال :

setcookie("username", "Morteza", time()+3600);

در مثال بالا نام کوکی username و مقدار آن نیز Morteza تعریف شده است و زمان  انقضای آن 1 ساعت در نظر گرفته شده است. زمان انقضا مساویست با زمان فعلی به اضافه مدت زمان انقضا بر حسب ثانیه.

چگونگی خواندن (بازیابی) از کوکی:

PHP برای اینکار از cookie_$  استفاده می کند. تمامی کوکی های تنظیم شده توسط یک وبسایت بوسیله  cookie_$ بازیابی می شود.

<?PHP // Print a cookie 
echo $_COOKIE["username"] 
print_r($_COOKIE) 
if (isset($_COOKIE["username"])) 
        echo "Welcome " . $_COOKIE["username"] . "!" 
else 
        echo "Welcome guest!" 
?>

کد بالا بررسی می کند که کوکی با نام مورد نظر تنظیم شده است یا خیر اگر تنظیم شده باشد پیغام Welcome Morteza  ودر غیر اینصورت پیغام Welcome guest را نمایش می دهد.

چگونگی پاک کردن کوکی :

برای پاک کردن یک کوکی تابع خاصی وجود ندارد . برای اینکار از تنظیم مجدد و معکوس زمان به صورت زیر استفاده می کنیم :

setcookie("username", "", time()-3600);

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

در زیر یک مثال عملی با استفاده از یک کوکی بر روی وب سایت آورده شده است :

<?php 
if (!isset($_POST['email'])) { 
// if form has not been submitted 
// display form 
// if cookie already exists, pre-fill form field with cookie value 
?> 
<html> 
<head></head> 
<body> 

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> 
Enter your email address: <input type="text" name="email" value="<?php echo $_COOKIE['email'] ?>" size="20"> 
<input type="submit" name="submit"> 
<?php 
// also calculate the time since the last submission 
if ($_COOKIE['lastsave']) { 
$days = round((time() - $_COOKIE['lastsave']) / 86400) 
echo " $days day(s) since last submission" 
} 
?> 
</form> 

</body> 
</html> 
<?php 
} 
else { 
// if form has been submitted 
// set cookies with form value and timestamp 
// both cookies expire after 30 days 
if (!empty($_POST['email'])) { 
setcookie("email", $_POST['email'], mktime()+(86400*30), "/") 
setcookie("lastsave", time(), mktime()+(86400*30), "/") 
echo "Your email address has been recorded." 
} 
else { 
echo "ERROR: Please enter your email address!" 
} 
} 
?> 
</body> 
</html>

 

set-cookies-php
Download “کد آماده استفاده از کوکی ها در PHP”
نسخه 1.0.0 3 بار دانلود شده است 1 KB

daskhatmin

فواد طهماسبی

فواد طهماسبی هستم، موسس وبسایت آموزشی دسخط. چندین سال تجربه کاری مرتبط با تکنولوژیهای توسعه وب دارم. علاقمند به ایده پردازی و توسعه کسب و کارهای اینترنتی هستم.

10 دیدگاه برای “نحوه استفاده از کوکی ها در PHP”

  1. مینا گفت:

    سلام.من میخام یه سایت دوزبانه داشته باشم وقتی مثلا کلیک کرد روی فارسی تا یک ساعت بعد هربار که وارد شد روی همون فارسی انتخاب شده باشه براش و بعد یک ساعت غیرفعال بشه هر کار میکنم اخطار میده

    1. سلام
      میتونید تایم مشخص بدید برای انقضای کوکی. در php به این صورت:

         
       setcookie('cookie_name', value, time() + (60 * 60 * 1), '/');
       

      ولی در کل بهتره برای تغییر زبان از طریق url عمل کنید. مگر اینکه موقعیت خاصی باشه.

  2. mp گفت:

    ممنون خیلی خوب بود

  3. احسان زارعی گفت:

    سلام من وقتی htaccess استفاده میکنم دیگه کوکی رو تو صفحاب کدم نمیشناسه و به کوگی ها دسترسی ندارم چیکار کنم؟

  4. حامد گفت:

    در مورد امنیت کوکی ها توضیحاتتون کم بود
    اگه ممکنه بیشتر رو این مبحث تمرکز کنید.با تشکر.

  5. مینا گفت:

    جالب بود ولی من یه فرم دارم که برای ورود به سایته و میخوام برای اون کوکی ست کنم ولی نمیدونم چطور آخه فرمم بکگراند و عکس هم داره و با جی کوئری هم نمایش داده میشه می تونید کمکم کنید؟

    1. فؤاد طهماسبی گفت:

      برای فرم لاگین به نظر من بهتره از session ها استفاده کنید. در مطلب زیر به این موضوع اشاره شده:
      https://daskhat.ir/515/create-registration-forms-with-php-mysql

  6. اكرم گفت:

    عالیه!ممنونم ازت

  7. علی گفت:

    عالی بود!
    با تشکر.

  8. مریم گفت:

    جالب بود !ولی برای تازکارا کلی توضیح دادین ممکنه درست متوجه نشن!

*اگر پرسشی دارید که مربوط به این مطلب نیست لطفا در بخش پرسشها مطرح کنید. در غیر این صورت دیدگاه شما تایید نخواهد شد.


کد HTMLCSSJavaScriptPHP