طراحی و توسعه وب سایتطراحی وب سایت

کوکی چیست و طریقه ی استفاده از کوکی در php

همه افرادی که با مرورگر کار می کنند، حتما و حداقل یکبار نام کوکی یا cookie را شنیده اند. در این مقاله قصد داریم به شما بگوییم که کوکی چیست و چگونه می توان از کوکی در Php استفاده کرد.

cookies یا کوکی چیست؟

کوکی ها یک متغیر می باشند که بوسیله ی سرور به مرورگر وب ارسال می شوند. Cookie معمولا یک فایل متنی کوچک است که سرور روی کامپیوتر کاربر می گنجاند. نام Cookie بصورت خودکار به یک متغیر با نام مشابه اختصاص داده می شود. برای مثال ، اگر یک Cookie با نام “user” ارسال گردد، بطور خودکار یک متغیر با نام user$ ایجاد می شود که شامل مقدار کوکی می باشد.

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

برای درک بهتر عملکرد Cookie لطفا شکل ۱ را ملاحظه نمایید.

انتقال Cookie بین سرور و مرورگر وب کلاینت

نحوه استفاده از cookies در Php

حال که با مفهوم کوکی یا cookies آشنا شده اید ،نحوه استفاده از کوکی در php را به شما توضیح خواهیم داد. در ادامه با ما همراه باشید.

طریقه ی ایجاد یک کوکی در php:

تابع ()setcookie برای ایجاد یک Cookie بکار می رود به بیان بهتر تابع ()setcoomie یک HTTP Cookie را به یک کلاینت ارسال می نماید. Cookie بایستی قبل از ارسال هر خروجی به کلاینت اختصاص داده شود. این تابع ارزش True را در زمان موفقیت یا False را درهنگام شکست خواهد داشت.

نکته: تابع ()setcookie بایستی قبل از تگ  <html> ظاهر گردد.

همینطور بخوانید  Cookie hijacking چیست و ۷ راهکار موثر برای مقابله با حملات Session Hijacking

نحوه ی استفاده از تابع ()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>

سوالات متداول

کوکی ها یک متغیر می باشند که بوسیله ی سرور به مرورگر وب ارسال می شوند. Cookie معمولا یک فایل متنی کوچک است که سرور روی کامپیوتر کاربر می گنجاند. نام Cookie بصورت خودکار به یک متغیر با نام مشابه اختصاص داده می شود.
cookie ها برای احراز هویت یک کاربر استفاده می شوند. کوکی ها در واقع یک فایل کوچک هستند که سرور روی کامپیوتر کاربر ذخیره می نماید. هر زمانیکه کامپیوتر کاربر یک صفحه را از طریق یک مرورگر وب درخواست می نماید، در واقع کوکی متناظر آنرا نیز ارسال می نماید.
برای حذف کوکی در php، کافی است زمان انقضای آنرا، زمان سپری شده قرار دهید. در واقع با بیان انقضای Cookie مشخص میکنید که آن حذف شده است.
متغیر COOKIE_$ در زبان PHP برای استخراج مقدار یک Cookie بکار می رود. البته متغیرهای superglobals مانند COOKIE_$ از نسخه ی PHP 4.1.0 به بعد در دسترس می باشند و در نسخه های پایینتر می توانید از متغیر REQUES_$ برای دسترسی به مقدار Cookie استفاده نمایید.

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

همین حالا رایگان عضو شوید

مدیر بلاگ

مشخصات مدیر

‫۳ دیدگاه ها

  1. سلام
    دمتون گرم و ممنون
    چون آدم خسته شده از این همه سایتی که مطالب w3schools را قرار میدهند. جالب اینجاست که حتی در برخی عنوان نمیشود که ترجمه است و یا منبع … فلان است. درست است که سایت w3schools بسیار خوب است، اما اگر همه بخواهند مطالب این سایت را به فارسی قرار دهند، دامنه مطلب در بخش فارسی زبانان نت بسیار کم خواهد شد و همیشه تکرار ….
    نکته جالب تر این است که برخی اجازه کپی را در صفحه نمیدهند. به نظر من این مسئله در هر سایتی، تنها به دلیل فقدان اطلاعاتی از برنامه نویسی است و به نظر می آید که خودشان بیشتر یک کپی کننده مطلب و در بهترین حالت وبلاگ نویس ساده هستند.

    نکته:
    کلمه زیر را در صفحه جستجو کنید و تصحیح کنید. فکر کنم اشتباه تایپی است. موفق باشید
    setcoomie

  2. سلام و خیلی ممنون از وقتی که گذاشتید برای مطلب بسیار مفید.
    میخاستم بدونم آیا امکان این هست که بشه کوکی های خاصی رو از کاربر دریافت کرد مثل اطلاعات ورود یک سری سایت و…
    تو حالتی که مثلا از خوده طرف پرسیده بشه که آیا اجازه میدید که کوکی های شما از طرف سایت رصد بشه (که خیلی از سایت ها اینکارو میکنن) اما میخام بدونم آیا میتوان اطلاعات خاصی مثل یوزر و پسورد سایت خاصی رو از کوکی های کاربر دریافت کرد؟
    خیلی ممنون میشم پاسخ بدید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نوشته های مشابه

دکمه بازگشت به بالا