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 Cookie: Cookie adalah file kecil, hingga 4KB, yang disimpan server di sisi klien dan dikembalikan setiap kali ada permintaan berikutnya.
  • ๏ธ Apa Itu Sesi: Sesi menyimpan data di server dengan ID unik, yang disimpan dalam array $_SESSION dan dirujuk oleh cookie sesi.
  • ๐Ÿ†š Perbedaan Kunci: Cookie tersimpan di sisi klien dan cocok untuk data kecil yang tidak sensitif; sesi tersimpan di sisi server dan menyimpan data yang lebih besar atau data pribadi.
  • ๏ธ Membuat Cookie: Fungsi `setcookie()` menetapkan nama, nilai, dan flag opsional seperti kedaluwarsa, jalur, domain, aman, dan httponly sebelum output HTML apa pun.
  • ๐Ÿ“ Membuat Sesi: Fungsi session_start() memulai sebuah sesi, setelah itu Anda membaca dan menulis nilai melalui array superglobal $_SESSION.
  • ๏ธ Membersihkan: Hapus masa berlaku cookie dengan mengatur waktu lampau; akhiri sesi dengan session_destroy() atau hapus satu nilai dengan unset().
  • ๐Ÿค– Bantuan AI: Alat AI dapat mengimplementasikan penanganan sesi yang aman dan menandai kelemahan cookie atau sesi dalam kode PHP yang ada.

Cookie dan Sesi PHP

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.

Apa itu kue

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.com berarti seluruh domain sedangkan www.sub.cookiedomain.com membatasi akses cookie ke www.sub.cookiedomain.com dan 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

Mengambil nilai Cookie

Catatan: Hanya array kosong yang ditampilkan

  • Langkah 2 โ€“ telusuri ke URL http://localhost/phptuts/cookies.php

Mengambil nilai Cookie

  • Langkah 3 โ€“ kembali ke tab pertama, lalu klik tombol refresh.

Mengambil nilai Cookie

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.

Pertanyaan Umum Demo Slot

Cookie menyimpan data dalam file kecil di browser pengguna dan dikirim bersama setiap permintaan. Sesi menyimpan data di server dan hanya mengirimkan cookie ID sesi. Sesi lebih aman untuk data sensitif atau data berukuran besar.

Secara default, PHP menyimpan data sesi sebagai file di jalur yang ditentukan oleh session.save_path di php.ini, yang seringkali merupakan direktori sementara sistem. Situs dengan trafik tinggi sering kali mengubah pengaturan ini ke basis data, Redis, atau Memcached.

Atur flag HttpOnly sehingga JavaSkrip tidak dapat membaca cookie, flag Secure sehingga hanya dikirim melalui HTTPS, dan atribut SameSite untuk membatasi pengiriman lintas situs. Untuk sesi, buat ulang ID setelah login.

Ya. AI dapat menghasilkan alur login yang meregenerasi ID sesi, mengatur flag cookie yang aman, menyimpan data minimal di sisi server, dan memberlakukan batas waktu. RevPeriksa hasilnya dan bandingkan dengan persyaratan keamanan Anda.

Ya. AI dapat memindai flag HttpOnly atau Secure yang hilang, risiko fiksasi sesi, penyimpanan data sensitif dalam cookie, dan tidak adanya regenerasi ID setelah login, kemudian menyarankan kode yang benar.

Ringkaslah postingan ini dengan: