Sesi PHP & Cookie PHP dengan Contoh
โก Ringkasan Cerdas
Cookie dan Session di PHP sama-sama mempertahankan status melalui protokol HTTP yang stateless, tetapi menyimpan data dengan cara yang berbeda. Panduan ini menjelaskan bagaimana cookie menyimpan file kecil di sisi klien, bagaimana session menyimpan data di sisi server, dan bagaimana cara membuat, membaca, dan menghapus masing-masing dengan kode yang berfungsi.

Apa itu kue?
Cookie adalah file kecil dengan ukuran maksimum 4KB yang disimpan oleh server web di komputer klien.
Setelah cookie disetel, semua permintaan halaman berikutnya akan mengembalikan nama dan nilai cookie.
Cookie hanya dapat dibaca dari domain tempat cookie tersebut diterbitkan. Misalnya, cookie yang dibuat menggunakan domain www.guru99.com tidak dapat dibaca dari domain tersebut. karir.guru99.com.
Sebagian besar website di internet menampilkan elemen dari domain lain seperti iklan. Domain yang melayani elemen ini juga dapat menyetel cookie mereka sendiri. Ini dikenal sebagai cookie pihak ketiga.
Cookie yang dibuat oleh pengguna hanya dapat dilihat oleh mereka. Pengguna lain tidak dapat melihat nilainya.
Sebagian besar peramban web memiliki opsi untuk menonaktifkan cookie, cookie pihak ketiga, atau keduanya.
Jika demikian, maka PHP akan merespons dengan meneruskan token cookie tersebut. URL.
Diagram yang ditunjukkan di bawah mengilustrasikan cara kerja cookie.
Di sini,
1) Seorang pengguna meminta halaman yang menyimpan cookie
2) Server menyetel cookie di komputer pengguna
3) Permintaan halaman lain dari pengguna akan mengembalikan nama dan nilai cookie
Mengapa dan kapan menggunakan Cookies?
- HTTP adalah protokol tanpa status; cookie memungkinkan kita untuk tracCookie adalah status aplikasi yang menggunakan file kecil yang tersimpan di komputer pengguna. Lokasi penyimpanan cookie bergantung pada browser yang digunakan. Internet Explorer biasanya menyimpannya di folder Temporary Internet Files.
- Mempersonalisasi pengalaman pengguna โ ini dicapai dengan memungkinkan pengguna untuk memilih preferensi mereka. Permintaan halaman selanjutnya dipersonalisasi berdasarkan preferensi yang ditetapkan dalam cookie.
- Tracking halaman yang dikunjungi oleh pengguna
Membuat Cookie
Sekarang mari kita lihat sintaks dasar yang digunakan untuk membuat cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
SINI,
- โsetcookieโ adalah Fungsi PHP digunakan untuk membuat cookie.
- โcookie_nameโ adalah nama cookie yang akan digunakan server saat mengambil nilainya dari variabel array $_COOKIE. Kolom ini wajib diisi.
- โcookie_valueโ adalah nilai dari cookie dan wajib diisi.
- โ[expiry_time]โ bersifat opsional; dapat digunakan untuk mengatur waktu kedaluwarsa cookie, misalnya 1 jam. Waktu diatur menggunakan fungsi PHP time() ditambah atau dikurangi sejumlah detik yang lebih besar dari 0, yaitu time() + 3600 untuk 1 jam.
- โ[cookie_path]โ adalah opsional; itu dapat digunakan untuk mengatur jalur cookie di server. Garis miring โ/โ berarti cookie akan tersedia di seluruh domain. Subdirektori membatasi akses cookie ke subdomain.
- โ[domain]โ bersifat opsional; dapat digunakan untuk menentukan hierarki akses cookie, yaitu
www.cookiedomain.comberarti seluruh domain sedangkanwww.sub.cookiedomain.commembatasi akses cookie kewww.sub.cookiedomain.comdan sub domainnya. - โ[secure]โ bersifat opsional; nilai defaultnya adalah false. Ini digunakan untuk menentukan apakah cookie dikirim melalui HTTPS jika diatur ke true, atau HTTP jika diatur ke false.
- โ[httponly]โ bersifat opsional. Jika diatur ke true, maka bahasa skrip sisi klien seperti JavaNaskah tidak dapat mengakses cookie.
Catatan: Fungsi PHP `setcookie` harus dieksekusi sebelum tag pembuka HTML.
Sekarang mari kita lihat contoh yang menggunakan cookie.
Kita akan membuat program sederhana yang memungkinkan kita menyimpan nama pengguna dalam cookie yang akan kedaluwarsa setelah enam puluh detik.
Kode di bawah ini menunjukkan implementasi dari contoh โcookies.phpโ di atas.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Keluaran:
the cookie has been set for 60 seconds
Mengambil nilai Cookie
Buat file lain bernama โcookies_read.phpโ dengan kode berikut.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
Keluaran:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Catatan: $_COOKIE adalah variabel superglobal bawaan PHP. Variabel ini berisi nama dan nilai dari semua cookie yang telah diatur.
Jumlah dan ukuran cookie dibatasi oleh browser, biasanya sekitar 50 cookie per domain dan 4KB per cookie.
Menguji aplikasi kita. Mari kita asumsikan Anda telah menyimpan file PHP Anda di folder phptuts.
- Langkah 1 โ buka browser web Anda dan masukkan URL http://localhost/phptuts/cookies_read.php
Catatan: Hanya array kosong yang ditampilkan
- Langkah 2 โ telusuri ke URL http://localhost/phptuts/cookies.php
- Langkah 3 โ kembali ke tab pertama, lalu klik tombol refresh.
Tunggu sebentar, lalu klik tombol refresh lagi. Apa hasil yang Anda dapatkan?
Hapus Cookie
- Jika Anda ingin menghancurkan cookie sebelum masa kadaluarsanya, maka Anda mengatur waktu kadaluarsa ke waktu yang telah lewat.
- Buat file baru bernama cookie_destroy.php dengan kode berikut.
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Ulangi langkah 1 hingga 3 dari bagian di atas tentang mengambil nilai cookie.
- Buka URL http://localhost/phptuts/cookie_destroy.php
- Beralih ke URL http://localhost/phptuts/cookies_read.phpApa hasil yang ditampilkan?
Apa itu Sesi?
- Sesi adalah variabel global yang disimpan di server.
- Setiap sesi diberi id unik yang digunakan untuk mengambil nilai yang disimpan.
- Setiap kali sesi dibuat, cookie yang berisi ID sesi unik akan disimpan di komputer pengguna dan dikembalikan bersama setiap permintaan ke server. Jika browser klien tidak mendukung cookie, ID sesi PHP unik akan ditampilkan di URL.
- Sesi memiliki kapasitas untuk menyimpan data yang relatif besar dibandingkan cookie.
- Nilai sesi secara otomatis dihapus ketika browser ditutup. Jika Anda ingin menyimpan nilai secara permanen, Anda harus menyimpannya di database.
- Sama seperti variabel array $_COOKIE, variabel sesi disimpan dalam variabel array $_SESSION. Sama seperti cookie, sesi harus dimulai sebelum tag HTML apa pun.
Mengapa dan kapan menggunakan Sesi?
- Anda ingin menyimpan informasi penting seperti ID pengguna dengan lebih aman di server sehingga pengguna jahat tidak dapat mengubahnya.
- Anda ingin meneruskan nilai dari satu halaman ke halaman lainnya.
- Anda menginginkan alternatif pengganti cookie pada browser yang tidak mendukung cookie.
- Anda ingin menyimpan variabel global dengan cara yang lebih efisien dan aman dibandingkan dengan meneruskannya begitu saja. URL.
- Anda sedang mengembangkanping sebuah aplikasi seperti tokoping Keranjang yang harus menyimpan informasi sementara dengan kapasitas lebih besar dari 4KB.
Membuat Sesi
Untuk membuat sesi, Anda harus terlebih dahulu memanggil fungsi PHP session_start dan kemudian menyimpan nilai-nilai Anda dalam variabel array $_SESSION.
Misalkan kita ingin mengetahui berapa kali suatu halaman telah dimuat. Kita dapat menggunakan sesi untuk melakukan itu.
Kode di bawah ini menunjukkan cara membuat dan mengambil nilai dari sesi.
<?php session_start(); // start the session if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Keluaran:
You are visitor number 1
Menghancurkan Variabel Sesi
Fungsi session_destroy() digunakan untuk menghancurkan seluruh sesi PHP.
Jika Anda ingin menghapus hanya satu item sesi, Anda menggunakan fungsi unset().
Kode di bawah ini mengilustrasikan cara menggunakan kedua metode tersebut.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
session_destroy menghapus semua data sesi, termasuk cookie yang terkait dengan sesi tersebut.
Perintah `unset` hanya membebaskan variabel sesi individual. Data lainnya tetap utuh.




