ايران ويج

نسخه‌ی کامل: نحوه استفاده از کوکی ها در PHP
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
کوکی چیست ؟

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

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


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

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

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

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

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

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

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

نحوه دستوری :

کد php:
setcookie("name""value"expire"path""domain");

Nameنام کوکی شما
Value
مقدار یا ارزشی که در کوکی ذخیره می شودمانند نام کاربری کلمه عبور, ...
Expireزمان انقضای کوکی.ه 
Path
مسیر وبسایت که کوکی برای آن معتبر است.
Domainوبسایتی که کوکی برای آن معتبر است
مثال :
کد php:
setcookie("username""Ghoghnus"time()+3600); 
در مثال بالا نام کوکی username و مقدار آن نیز Ghoghnus تعریف شده است و زمان انقضای آن ۱ ساعت در نظر گرفته شده است. زمان انقضا مساویست با زمان فعلی به اضافه مدت زمان انقضا بر حسب ثانیه.

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

PHP برای اینکار از cookie_$ استفاده می کند. تمامی کوکی های تنظیم شده توسط یک وبسایت بوسیله cookie_$ بازیابی می شود.
کد php:
<?PHP // Print a cookie 
echo $_COOKIE["username"
print_r($_COOKIE
if (isset(
$_COOKIE["username"])) 
        echo 
"Welcome " $_COOKIE["username"] . "!" 
else 
        echo 
"Welcome guest!" 
?>

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

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

برای پاک کردن یک کوکی تابع خاصی وجود ندارد . برای اینکار از تنظیم مجدد و معکوس زمان به صورت زیر استفاده می کنیم :
کد php:
setcookie("username"""time()-3600); 
در مثال بالا مقدار کوکی پوچ و زمان انقضای کوکی یک ساعت زودتر از زمان ساخت آن قرار داده می شود که با اجرای تابع کوکی حذف خواهد شد.

در زیر یک مثال عملی با استفاده از یک کوکی بر روی وب سایت آورده شده است :
کد php:
<?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>