Fungsi setcookie()
digunakan untuk mendefinisikan cookie yang akan dikirim bersama dengan header HTTP lainnya.
Cookie sering digunakan untuk mengidentifikasi pengguna. Cookie adalah file kecil yang disematkan pada server di komputer pengguna. Setiap kali komputer yang sama meminta halaman dengan browser, cookie juga akan dikirim. PHP dapat membuat dan mengambil nilai cookie.
Nama cookie secara otomatis ditetapkan ke variabel dengan nama yang sama. Misalnya, jika cookie dikirim dengan nama “user”, variabel secara otomatis dibuat bernama $user, yang berisi nilai cookie.
Catatan: Fungsi setcookie ()
harus muncul SEBELUM tag <html> .
Catatan: Nilai cookie secara otomatis dikodekan URL saat mengirim cookie dan secara otomatis didekodekan saat diterima (untuk mencegah pengodean URL, gunakan setrawcookie()
sebagai gantinya).
setcookie(name, value, expire, path, domain, secure, httponly);
Parameter | Deskripsi |
---|---|
name | Required. Menentukan nama cookie |
value | Optional. Menentukan nilai cookie |
expire | Optional. Menentukan kapan cookie kedaluwarsa. Nilai: time () + 86400 * 30, akan menyetel cookie agar kedaluwarsa dalam 30 hari. Jika parameter ini dihilangkan atau disetel ke 0, cookie akan kedaluwarsa di akhir sesi (saat browser ditutup). Default-nya adalah 0 |
path | Optional. Menentukan jalur server cookie. Jika disetel ke “/”, cookie akan tersedia di seluruh domain. Jika disetel ke “/php/”, cookie hanya akan tersedia di dalam direktori php dan semua sub-direktori php. Nilai defaultnya adalah direktori saat ini tempat cookie sedang disetel |
domain | Optional. Menentukan nama domain cookie. Untuk membuat cookie tersedia di semua subdomain example.com, setel domain ke “example.com”. Menyetelnya ke www.example.com akan membuat cookie hanya tersedia di subdomain www |
secure | Optional.Menentukan apakah cookie hanya boleh dikirim melalui koneksi HTTPS yang aman atau tidak. TRUE akan menunjukkan bahwa cookie hanya akan disetel jika ada koneksi aman. Default-nya FALSE |
httponly | Optional. Jika disetel ke TRUE, cookie hanya akan dapat diakses melalui protokol HTTP (cookie tidak akan dapat diakses oleh bahasa skrip). Pengaturan ini dapat membantu mengurangi pencurian identitas melalui serangan XSS. Default-nya FALSE |
Return Value: | TRUE jika sukses . FALSE jika gagal |
---|---|
PHP Version: | 4+ |
PHP Changelog: | PHP 5.5 – Atribut Max-Age disertakan dalam header Set-Cookie yang dikirim ke klien PHP 5.2 – Parameter httponly telah ditambahkan |
Contoh 1
Contoh berikut membuat cookie bernama “user” dengan nilai “Tony Stark”. Cookie akan kedaluwarsa setelah 30 hari (86400 * 30). “/” Berarti cookie tersedia di seluruh situs web (jika tidak, pilih direktori yang diinginkan).
Kemudian ambil nilai cookie “user” (menggunakan variabel global $_COOKIE) dan gunakan fungsi isset () untuk mengetahui cookie yang disetel:
<!DOCTYPE html> <?php $cookie_name = "user"; $cookie_value = "Tony Stark"; setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day ?> <html> <body> <?php if(!isset($_COOKIE[$cookie_name])) { echo "Cookie bernama '" . $cookie_name . "' tidak disetel!"; } else { echo "Cookie bernama'" . $cookie_name . "' disetel!<br>"; echo "Nilainya: " . $_COOKIE[$cookie_name]; } ?> <p><strong>Catatan:</strong> Memuat ulang halaman untuk melihat nilai cookie.</p> </body> </html> <!-- Output : Cookie bernama 'user' tidak disetel! Catatan: Memuat ulang halaman untuk melihat nilai cookie. --->
Contoh 2
Beberapa tanggal kedaluwarsa untuk cookie:
<?php $value = "Hello world!"; // cookie akan kedaluwarsa saat browser ditutup setcookie("myCookie", $value); // Cookie akan kadaluarsa dalam 1 jam setcookie("myCookie", $value, time() + 3600); // cookie akan kedaluwarsa dalam 1 jam dan hanya akan tersedia // di dalam direktori php + semua sub-direktori php setcookie("myCookie", $value, time() + 3600, "/php/"); ?> <html> <body> ...Tulis Kode PHPnya... </body> </html>
Contoh 3
Untuk memodifikasi cookie, cukup setel (lagi) cookie menggunakan fungsi setcookie():
<!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 bernama '" . $cookie_name . "' tidak disetel!"; } else { echo "Cookie bernama'" . $cookie_name . "' disetel!<br>"; echo "Nilainya: " . $_COOKIE[$cookie_name]; } ?> <p><strong>Catatan:</strong> Memuat ulang halaman untuk melihat nilai cookie.</p> </body> </html> <!-- Output : Cookie bernama 'user' tidak disetel! Catatan: Memuat ulang halaman untuk melihat nilai cookie. --->
Contoh 4
Untuk menghapus cookie, gunakan fungsi setcookie () dengan tanggal kedaluwarsa di masa lalu:
<?php // setel tanggal kedaluwarsa menjadi satu jam yang lalu setcookie("user", "", time() - 3600); ?> <html> <body> <?php echo "Cookie 'user' dihapus."; ?> // Output : Cookie 'user' dihapus
Contoh 5
Buat skrip kecil yang memeriksa apakah cookie diaktifkan. Pertama, coba buat cookie percobaan dengan fungsi setcookie(), lalu hitung variabel array $_COOKIE:
?php setcookie("test_cookie", "test", time() + 3600, '/'); ?> <html> <body> <?php if(count($_COOKIE) > 0) { echo "Cookies diaktifkan."; } else { echo "Cookies dinonaktifkan."; } ?> // Output : Cookies dinonaktifkan