PHP - Sesi

Cara alternatif untuk membuat data dapat diakses di berbagai halaman di seluruh situs web adalah dengan menggunakan Sesi PHP.

Sesi membuat file di direktori sementara di server tempat variabel sesi terdaftar dan nilainya disimpan. Data ini akan tersedia untuk semua halaman di situs selama kunjungan itu.

Lokasi file sementara ditentukan oleh pengaturan di php.ini file bernama session.save_path. Sebelum menggunakan variabel sesi apa pun, pastikan Anda telah menyiapkan jalur ini.

Ketika sesi dimulai, hal-hal berikut terjadi -

  • PHP pertama kali membuat pengenal unik untuk sesi tertentu yang merupakan string acak dari 32 angka heksadesimal seperti 3c7foj34c3jj973hjkop2fc937e3443.

  • Sebuah cookie disebut PHPSESSID secara otomatis dikirim ke komputer pengguna untuk menyimpan string identifikasi sesi unik.

  • File secara otomatis dibuat di server dalam direktori sementara yang ditentukan dan menggunakan nama pengenal unik yang diawali oleh sess_ yaitu sess_3c7foj34c3jj973hjkop2fc937e3443.

Ketika skrip PHP ingin mengambil nilai dari variabel sesi, PHP secara otomatis mendapatkan string pengenal sesi unik dari cookie PHPSESSID dan kemudian mencari di direktori sementara untuk file yang memiliki nama tersebut dan validasi dapat dilakukan dengan membandingkan kedua nilai tersebut.

Sesi berakhir ketika pengguna kehilangan browser atau setelah meninggalkan situs, server akan menghentikan sesi setelah jangka waktu yang telah ditentukan, biasanya durasi 30 menit.

Memulai Sesi PHP

Sesi PHP mudah dimulai dengan melakukan panggilan ke session_start()Fungsi ini pertama-tama memeriksa apakah sesi sudah dimulai dan jika tidak ada yang dimulai, maka sesi akan dimulai. Dianjurkan untuk melakukan panggilan kesession_start() di awal halaman.

Variabel sesi disimpan dalam array asosiatif yang disebut $_SESSION[]. Variabel ini dapat diakses selama masa sesi.

Contoh berikut memulai sesi kemudian mendaftarkan variabel yang dipanggil counter yang bertambah setiap kali halaman dikunjungi selama sesi.

Menggunakan isset() berfungsi untuk memeriksa apakah variabel sesi sudah disetel atau belum.

Letakkan kode ini dalam file test.php dan muat file ini berkali-kali untuk melihat hasilnya -

<?php
   session_start();
   
   if( isset( $_SESSION['counter'] ) ) {
      $_SESSION['counter'] += 1;
   }else {
      $_SESSION['counter'] = 1;
   }
	
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
?>

<html>
   
   <head>
      <title>Setting up a PHP session</title>
   </head>
   
   <body>
      <?php  echo ( $msg ); ?>
   </body>
   
</html>

Ini akan menghasilkan hasil sebagai berikut -

You have visited this page 1in this session.

Menghancurkan Sesi PHP

Sesi PHP dapat dihancurkan oleh session_destroy()fungsi. Fungsi ini tidak memerlukan argumen apa pun dan satu panggilan dapat menghancurkan semua variabel sesi. Jika Anda ingin menghancurkan variabel sesi tunggal maka Anda dapat menggunakanunset() fungsi untuk menghapus variabel sesi.

Berikut adalah contoh untuk membatalkan satu variabel -

<?php
   unset($_SESSION['counter']);
?>

Ini panggilan yang akan menghancurkan semua variabel sesi -

<?php
   session_destroy();
?>

Mengaktifkan Sesi Otomatis

Anda tidak perlu memanggil fungsi start_session () untuk memulai sesi ketika pengguna mengunjungi situs Anda jika Anda dapat mengaturnya session.auto_start variabel ke 1 in php.ini mengajukan.

Sesi tanpa cookie

Mungkin ada kasus ketika pengguna tidak mengizinkan untuk menyimpan cookie di komputer mereka. Jadi ada metode lain untuk mengirim ID sesi ke browser.

Alternatifnya, Anda dapat menggunakan SID konstan yang ditentukan jika sesi dimulai. Jika klien tidak mengirim cookie sesi yang sesuai, ia memiliki bentuk session_name = session_id. Jika tidak, itu meluas menjadi string kosong. Dengan demikian, Anda dapat menyematkannya tanpa syarat ke dalam URL.

Contoh berikut menunjukkan cara mendaftarkan variabel, dan cara menautkan dengan benar ke halaman lain menggunakan SID.

<?php
   session_start();
   
   if (isset($_SESSION['counter'])) {
      $_SESSION['counter'] = 1;
   }else {
      $_SESSION['counter']++;
   }
   
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
   
   echo ( $msg );
?>

<p>
   To continue  click following link <br />
   
   <a  href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>

Ini akan menghasilkan hasil sebagai berikut -

You have visited this page 1in this session.
To continue click following link

Itu htmlspecialchars() dapat digunakan saat mencetak SID untuk mencegah serangan terkait XSS.