setcookie()
PHP setcookie() funksiyasi
Misol
Quyidagi misol "John Doe" qiymatiga ega "user" nomli cookie yaratadi. Cookie muddati 30 kundan keyin (86400 * 30) tugaydi. "/" cookie butun veb-saytda mavjud bo‘lishini bildiradi (aks holda, o‘zingiz xohlagan katalogni tanlang).
So‘ngra "user" cookie qiymatini ($_COOKIE global o‘zgaruvchisi yordamida) olamiz. Shuningdek, cookie o‘rnatilganligini bilish uchun isset() funksiyasidan foydalanamiz:
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<!DOCTYPE html>
<html>
<body>
<?php
if(isset($_COOKIE[$cookie_name])) {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
} else {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
?>
</body>
</html>
Ta’rif va qo‘llanilishi
setcookie() funksiyasi qolgan HTTP sarlavhalari bilan birga yuboriladigan cookie’ni belgilaydi.
Eslatma: setcookie() funksiyasi <html> tegidan OLDIN kelishi shart, chunki cookie’lar HTTP sarlavhasining bir qismidir.
Cookie nomi avtomatik ravishda xuddi shu nomdagi o‘zgaruvchiga tayinlanadi. Masalan, agar cookie "user" nomi bilan yuborilgan bo‘lsa, cookie qiymatini o‘z ichiga olgan $user nomli o‘zgaruvchi avtomatik yaratiladi.
Cookie qiymatini olish uchun
$_COOKIE superglobal o‘zgaruvchisidan foydalaning.
Eslatma: Cookie qiymati cookie yuborilayotganda avtomatik ravishda URL-kodlanadi va qabul qilinganda avtomatik dekodlanadi (URL-kodlashning oldini olish uchun uning o‘rniga setrawcookie() dan foydalaning).
Sintaksis
setcookie(name, value, expire, path, domain, secure, httponly);
Parametr qiymatlari
| Parametr | Tavsif |
|---|---|
| name | Majburiy. Cookie nomini belgilaydi |
| value | Ixtiyoriy. Cookie qiymatini belgilaydi |
| expire | Ixtiyoriy. Cookie muddati qachon tugashini belgilaydi. time()+86400*30 qiymati cookie muddatini 30 kundan keyin tugaydigan qilib o‘rnatadi. Agar bu parametr ko‘rsatilmasa yoki 0 ga o‘rnatilsa, cookie muddati seans oxirida (brauzer yopilganda) tugaydi. Standart qiymat: 0 |
| path | Ixtiyoriy. Cookie’ning serverdagi yo‘lini belgilaydi. Agar "/" ga o‘rnatilsa, cookie butun domen doirasida mavjud bo‘ladi. Agar "/php/" ga o‘rnatilsa, cookie faqat php katalogi va uning barcha ichki kataloglarida mavjud bo‘ladi. Standart qiymat: cookie o‘rnatilayotgan joriy katalog |
| domain | Ixtiyoriy. Cookie’ning domen nomini belgilaydi. Cookie example.com ning barcha subdomenlarida mavjud bo‘lishi uchun domain ni "example.com" ga o‘rnating. Uni www.example.com ga o‘rnatish cookie’ni faqat www subdomenida mavjud qiladi |
| secure | Ixtiyoriy. Cookie faqat xavfsiz HTTPS ulanishi orqali uzatilishi kerakmi yoki yo‘qligini belgilaydi. TRUE cookie faqat xavfsiz ulanish mavjud bo‘lganda o‘rnatilishini bildiradi. Standart qiymat: FALSE |
| httponly | Ixtiyoriy. Agar TRUE ga o‘rnatilsa, cookie faqat HTTP protokoli orqali mavjud bo‘ladi (skript tillari cookie’ga murojaat qila olmaydi). Bu sozlama XSS hujumlari orqali shaxsiy ma’lumotlar o‘g‘irlanishini kamaytirishga yordam beradi. Standart qiymat: FALSE |
Texnik tafsilotlar
| Qaytariladigan qiymat: | Muvaffaqiyatli bo‘lsa TRUE. Muvaffaqiyatsiz bo‘lsa FALSE |
|---|---|
| PHP versiyasi: | 4+ |
| PHP o‘zgarishlar tarixi: | PHP 8.2: Cookie sana formati endi 'D, d M Y H:i:s \G\M\T'. Avval u 'D, d-M-Y H:i:s T' edi |
Ko‘proq misollar
Misol
Cookie’lar uchun bir nechta amal qilish muddati:
<?php
$name = "user";
$value = "John Doe";
// cookie will expire when the browser close
setcookie($name, $value);
// cookie will expire in 1 hour
setcookie($name, $value, time() + 3600);
// cookie will expire in 1 hour, and will only be available
// within the php directory + all sub-directories of php
setcookie($name, $value, time() + 3600, "/php/");
?>
<html>
<body>
...some code...
</body>
</html>
Misol
Cookie’ni o‘zgartirish uchun uni setcookie() funksiyasi yordamida shunchaki (qaytadan) o‘rnating:
<?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 '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
} else {
echo "Cookie named '" . $cookie_name . "' is not set!";
}
?>
</body>
</html>
Misol
Cookie’ni o‘chirish uchun setcookie() funksiyasini o‘tgan vaqtdagi amal qilish muddati bilan ishlating:
<?php
// set the expiration date to one hour ago
setcookie("user", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' is deleted.";
?>
</body>
</html>
Misol
Cookie’lar yoqilganligini tekshiradigan kichik skript yarating. Avval setcookie() funksiyasi yordamida sinov cookie’sini yaratishga harakat qiling, so‘ng $_COOKIE massiv o‘zgaruvchisini sanang:
<?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>
❮ PHP tarmoq ma’lumotnomasi
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
