setcookie
تابع «setcookie» کوکی (Cookie) می سازد و همراه هدرها می فرستد. کوکی یک فایل کوچک شناسایی است. مرورگر آن را نگه می دارد. سپس هر بار درخواست می فرستد. مثل کارت کتابخانه مدرسه که همیشه همراهت است.
setcookie چیست؟
«setcookie(name, value, expire, path, domain, secure, httponly)» یک کوکی تعریف می کند. name نام کوکی است. value مقدار آن است. expire زمان انقضاست. path محدوده مسیر است. domain دامنه مجاز است. secure فقط روی HTTPS می فرستد. httponly دسترسی جاوااسکریپت را می بندد.
هشدار: setcookie باید قبل از برچسب <html> اجرا شود. وگرنه هدرها قبلاً ارسال شده اند.
ساخت و خواندن کوکی
<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if (!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
انقضا و مسیر کوکی
<?php
$value = "Hello world!";
setcookie("myCookie", $value);
setcookie("myCookie", $value, time() + 3600);
setcookie("myCookie", $value, time() + 3600, "/php/");
?>
<html>
<body>
...some code...
</body>
</html>
ویرایش و حذف کوکی
ویرایش مقدار
<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>
<?php
if (!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
حذف کوکی
<!DOCTYPE html>
<?php
setcookie("user", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>
بررسی فعال بودن کوکی ها
<?php
setcookie("test_cookie", "test", time() + 3600, "/");
?>
<html>
<body>
<?php
if (count($_COOKIE) > 0) {
echo "Cookies are enabled.";
} else {
echo "Cookies are disabled.";
}
?>
</body>
</html>
نکات مهم امنیتی و کاربردی
- برای امنیت، secure و httponly را فعال کن.
- برای داده خام از setrawcookie() استفاده کن.
- برای دسترسی از آرایه سراسری «$_COOKIE» کمک بگیر.
- برای مرور کامل، صفحه setcookie را ببین.
جمع بندی سریع
- setcookie باید قبل از <html> اجرا شود.
- expire صفر یعنی تا بستن مرورگر.
- path "/" یعنی همه مسیرها.
- secure روی HTTPS می فرستد.
- httponly جلوی XSS را کم می کند.