کوکی ها در php

13 خرداد 1398, خواندن در 5 دقیقه

کوکی (cookie) چیست؟

کوکی یک قطعه اطلاعات (یک فایل متنی) است که سرور بر روی کامپیوتر کاربر ذخیره کرده و در مراجعات کاربر به همان سایت ، از آن اطلاعات برای شناسایی وی استفاده می کند .این فایل متنی شامل داده هایی مانند رمز عبور ، نام کاربری ، ایمیل و اطلاعاتی است که در سایت مقصد وارد کرده باشید است.شما زمانی که به همان سایت وارد می شوید اطلاعاتی که در کوکی ذخیره شده اند ، به سرور ارسال شده و سایت باتوجه به اطلاعات فرستاده شده بالا می آید. برای مثال فرض کنید که در یک سایت فروم عضو شده و یک رمز عبور و شناسه کاربری را برای خود تعیین کرده اید . هنگامی که برای اولین بار اطلاعات کاربری خود را در مرورگر وارد می کنید ، این اطلاعات در یک کوکی بر روی مرورگر کامپیوتر شما ذخیره می شود . هنگامی که در مراجعه بعدی به همان سایت می روید ، متوجه می شوید که مرورگر اطلاعات کاربری شما را وارد نموده و شما log in شده اید ، بدون اینکه خودتان کاری انجام داده باشید .اینکه کوکی ها در کجا ذخیره می شوند، بسته به تنظیمات مرورگرهای مختلف، متفاوت است. 

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

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

امنیت کوکی ها

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

ایجاد کوکی (cookie) در PHP

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

setcookie("name", "value", expire, "path", "domain");
  • Name: نام کوکی شما
  • Value: نام کاربری و... , مقدار یا ارزشی که در کوکی ذخیره می شود مانند: کلمه عبور
  • Expire: زمان انقضای کوکی. 
  • Path: مسیر وبسایت که کوکی برای آن معتبر است.
  • Domain: وبسایتی که کوکی برای آن معتبر است.

برای مثال به قطعه کد زیر دقت فرمایید:

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

در قطعه کد بالا برای پارامتر name،username و برای مقدار و ارزش آن mohammad در نظر گرفته شده است . دقت کنید اگر path,domain را خالی بگذارید سایت فعلی با دامنه ی اصلی خودتان در نظر گرفته میشود.

اما درباره ی زمان انقضا باید بگوییم که منظور از زمان انقضا مدت زمانی است که کوکی معتبر میباشد و بعد از این زمان دیگر اعتبار نداشته و به سرور فرستاده نمیشود.این عمل ضریب امنیت کوکی را بالا میبرد.

در مثال بالا مقدار   expire را برابر time()+3600 قرار دادیم که معنی آن این است که زمان انقضا برابر است با زمان فعلی بعلاوه ی 3600 ثانیه بعد. یعنی از زمانی که کوکی بوجود می آید تا یک ساعت بعد.(دقت شود مقدار expire  باید برحسب ثانیه تعیین گردد.)

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

تابعی که در بالا استفاده شد فقط کوکی را ایجاد میکند ولی کوکی را نمیخواند.برای این که فایل متنی ایجاد شده(کوکی) توسط سایت بازیابی و خوانده شود php از cookie_$استفاده میکند.

برای مثال به قطعه کد زیر توجه فرمایید:

<?PHP // Print a cookie 

echo $_COOKIE["username"] 

print_r($_COOKIE) 

if (isset($_COOKIE["username"])) 

        echo "Welcome " . $_COOKIE["username"] . "!" 

else 

        echo "Welcome guest!" 

?>

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

پاک کردن کوکی

برای پاک کردن کوکی تابع خاصی نداریم ولی میتوانیم با ترفندی کوکی را پاک کنیم به مثال زیر توجه کنید:

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>

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

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

موفق باشید

برای یادگیری کامل php میتوانید دوره : آموزش پی اچ پی

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
پشتیبانی راکت @roocketir
باور ما اینست که کاربران ایرانی لایق بهترین‌ها هستند، از این رو ما تمام تلاش خود را می‌کنیم تا بتوانیم فیلم‌ها و مقالات آموزشی بروز و کاربردی را در اخ...
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو