Apa yang disimpan dalam sesi php?

Dalam tutorial ini Anda akan belajar cara menyimpan data tertentu di server secara sementara menggunakan sesi PHP

Apa itu Sesi

Meskipun Anda dapat menyimpan data menggunakan cookie tetapi memiliki beberapa masalah keamanan. Karena cookie disimpan di komputer pengguna, penyerang dapat dengan mudah memodifikasi konten cookie untuk memasukkan data yang berpotensi berbahaya ke dalam aplikasi Anda yang dapat merusak aplikasi Anda

Juga setiap kali browser meminta URL ke server, semua data cookie untuk situs web secara otomatis dikirim ke server dalam permintaan tersebut. Ini berarti jika Anda telah menyimpan 5 cookie di sistem pengguna, masing-masing berukuran 4KB, browser perlu mengunggah 20KB data setiap kali pengguna melihat halaman, yang dapat memengaruhi performa situs Anda

Anda dapat menyelesaikan kedua masalah ini dengan menggunakan sesi PHP. Sesi PHP menyimpan data di server daripada di komputer pengguna. Dalam lingkungan berbasis sesi, setiap pengguna diidentifikasi melalui nomor unik yang disebut pengidentifikasi sesi atau SID. ID sesi unik ini digunakan untuk menautkan setiap pengguna dengan informasi mereka sendiri di server seperti email, postingan, dll

Tip. ID sesi dihasilkan secara acak oleh mesin PHP yang hampir tidak mungkin ditebak. Selanjutnya, karena data sesi disimpan di server, tidak harus dikirim dengan setiap permintaan browser

Memulai Sesi PHP

Sebelum Anda dapat menyimpan informasi apa pun dalam variabel sesi, Anda harus memulai sesi terlebih dahulu. Untuk memulai sesi baru, cukup panggil fungsi PHP session_start(). Ini akan membuat sesi baru dan menghasilkan ID sesi unik untuk pengguna

Kode PHP pada contoh di bawah hanya memulai sesi baru

Fungsi session_start()_ pertama memeriksa untuk melihat apakah sesi sudah ada dengan mencari keberadaan ID sesi. Jika menemukan satu, i. e. jika sesi sudah dimulai, itu mengatur variabel sesi dan jika tidak, itu memulai sesi baru dengan membuat ID sesi baru

Catatan. Anda harus memanggil fungsi session_start() di awal halaman i. e. sebelum output apa pun dihasilkan oleh skrip Anda di browser, seperti yang Anda lakukan saat menyetel cookie dengan fungsi setcookie()

Menyimpan dan Mengakses Data Sesi

Anda dapat menyimpan semua data sesi Anda sebagai key-value pair di $_SESSION[] superglobal array. Data yang disimpan dapat diakses selama masa sesi. Pertimbangkan skrip berikut, yang membuat sesi baru dan mendaftarkan dua variabel sesi

Untuk mengakses data sesi yang kami atur pada contoh kami sebelumnya dari halaman lain di domain web yang sama — cukup buat ulang sesi dengan memanggil session_start() lalu berikan kunci yang sesuai ke array asosiatif 1

Kode PHP pada contoh di atas menghasilkan keluaran berikut

Catatan. Untuk mengakses data sesi di halaman yang sama tidak perlu membuat ulang sesi karena sudah dimulai di bagian atas halaman

Menghancurkan Sesi

Jika Anda ingin menghapus data sesi tertentu, cukup hapus kunci yang sesuai dari array asosiatif 1, seperti yang ditunjukkan pada contoh berikut

Namun, untuk menghancurkan sesi sepenuhnya, cukup panggil fungsi 3. Fungsi ini tidak memerlukan argumen apa pun dan satu panggilan akan menghancurkan semua data sesi

Catatan. Sebelum menghancurkan sesi dengan fungsi _3, Anda harus terlebih dahulu membuat ulang lingkungan sesi jika belum ada menggunakan fungsi session_start(), sehingga ada sesuatu yang akan dihancurkan

Setiap sesi PHP memiliki nilai batas waktu — durasi, diukur dalam detik — yang menentukan berapa lama sesi harus tetap hidup tanpa adanya aktivitas pengguna. Anda dapat menyesuaikan durasi timeout ini dengan mengubah nilai variabel 6 di file konfigurasi PHP (7)

Penanganan sesi adalah konsep kunci dalam PHP yang memungkinkan informasi pengguna dipertahankan di semua halaman situs web atau aplikasi. Dalam posting ini, Anda akan mempelajari dasar-dasar penanganan sesi di PHP

Kami akan mulai dengan penjelasan tentang cara kerja sesi dan bagaimana kaitannya dengan cookie. Kemudian kita akan melihat beberapa cuplikan kode yang mendemonstrasikan cara bekerja dengan sesi. Anda akan belajar cara membuat dan menghancurkan sesi, dan cara mengubah variabel sesi

Cookie vs. Variabel Sesi

Tidak yakin apakah Anda memerlukan cookie atau variabel sesi? . Cookie adalah cara untuk menyimpan data tentang pengguna di komputer pengguna. Variabel sesi biasanya digunakan dalam aplikasi yang perlu melacak aktivitas pengguna. Cookie biasanya digunakan dalam aplikasi yang perlu menyimpan informasi tentang pengguna untuk satu situs

Anda juga dapat mempelajari tentang variabel sesi di postingan saya tentang penggunaan cookie di PHP

  • Cara Bekerja Dengan Cookie di PHP

    Sajal Soni

    16 Februari 2021

Apa itu Sesi di PHP?

Sesi adalah mekanisme untuk mempertahankan informasi di berbagai halaman web untuk mengidentifikasi pengguna saat mereka membuka situs atau aplikasi. Apakah Anda bertanya-tanya mengapa sesi diperlukan untuk situs web?

Protokol HTTP adalah protokol tanpa kewarganegaraan, yang berarti tidak mungkin server dapat mengingat pengguna tertentu di antara beberapa permintaan. Misalnya, ketika Anda mengakses halaman web, server hanya bertanggung jawab untuk menyediakan konten halaman yang diminta. Jadi, ketika Anda mengakses halaman lain dari situs web yang sama, server web menginterpretasikan setiap permintaan secara terpisah, seolah-olah tidak terkait satu sama lain. Tidak ada cara bagi server untuk mengetahui bahwa setiap permintaan berasal dari pengguna yang sama

Diagram berikut menggambarkan protokol HTTP secara singkat

Dalam model ini, jika Anda ingin menampilkan informasi khusus pengguna, Anda harus mengautentikasi pengguna di setiap permintaan. Bayangkan jika Anda harus mengetikkan username dan password di setiap halaman yang menampilkan informasi profil Anda. Ya, itu akan merepotkan dan tidak praktis sama sekali, dan di situlah sesi muncul

Sesi memungkinkan Anda untuk berbagi informasi di berbagai halaman dari satu situs atau aplikasi—sehingga membantu mempertahankan status. Ini memungkinkan server mengetahui bahwa semua permintaan berasal dari pengguna yang sama, sehingga memungkinkan situs untuk menampilkan informasi dan preferensi khusus pengguna

Alur Masuk Dengan Sesi dan Cookie

Mari kita segera melalui alur login umum untuk sebuah situs web guna memahami apa yang terjadi di balik layar

  1. Seorang pengguna membuka halaman login situs web
  2. Setelah mengirimkan formulir login, server di sisi lain mengautentikasi permintaan dengan memvalidasi kredensial yang dimasukkan
  3. Jika kredensial yang dimasukkan oleh pengguna valid, server akan membuat sesi baru. Server menghasilkan nomor acak unik, yang disebut id sesi. Itu juga membuat file baru di server yang digunakan untuk menyimpan informasi khusus sesi
  4. Selanjutnya, id sesi diteruskan kembali ke pengguna, bersama dengan sumber daya apa pun yang diminta. Di belakang layar, ID sesi ini dikirim dalam cookie 347 di header tanggapan
  5. Saat browser menerima respons dari server, browser akan menemukan header cookie ________11______47. Jika cookie diizinkan oleh browser, cookie ________11______47 ini akan disimpan, yang menyimpan ID sesi yang diteruskan oleh server
  6. Untuk permintaan selanjutnya, cookie 3_47 akan diteruskan kembali ke server. Saat server menemukan cookie 3_47, server akan mencoba menginisialisasi sesi dengan id sesi tersebut. Itu dilakukan dengan memuat file sesi yang dibuat sebelumnya, selama inisialisasi sesi. Ini kemudian akan menginisialisasi variabel array super global 352 dengan data yang disimpan dalam file sesi

Dengan cara ini, data pengguna disimpan di beberapa permintaan, dan pengguna tetap masuk selama satu sesi

Diagram berikut menggambarkan bagaimana protokol HTTP bekerja dengan sesi

Sekarang setelah Anda melihat pengantar singkat tentang cara kerja sesi, kami akan membuat beberapa contoh praktis untuk menunjukkan cara membuat dan memanipulasi variabel sesi

Cara Memulai Sesi

Di bagian ini, kita akan membahas cara memulai sesi di PHP

Setiap kali Anda ingin menangani variabel sesi, Anda perlu memastikan bahwa sesi sudah dimulai. Ada beberapa cara untuk memulai sesi di PHP

Gunakan Fungsi 3_53

Ini adalah metode yang paling sering Anda lihat, di mana sesi dimulai oleh fungsi 353 

1<?php 2// start a session 3session_start(); 4 5// manipulate session variables <?php 0<?php 1

Hal yang penting adalah fungsi 353 harus dipanggil di awal skrip, sebelum keluaran apa pun dikirim ke browser. Jika tidak, Anda akan menemukan kesalahan ________11______56 yang terkenal

Mulai Sesi Secara Otomatis

Jika ada kebutuhan untuk menggunakan sesi di seluruh aplikasi Anda, Anda juga dapat ikut serta untuk memulai sesi secara otomatis tanpa menggunakan fungsi 353

Ada opsi konfigurasi di file php. ini yang memungkinkan Anda memulai sesi secara otomatis untuk setiap permintaan—358. Secara default, disetel ke 359, dan Anda dapat menyetelnya ke 360 untuk mengaktifkan fungsi mulai otomatis

1<?php 3

Di sisi lain, jika Anda tidak memiliki akses ke file php. ini, dan Anda menggunakan server web Apache, Anda juga dapat menyetel variabel ini menggunakan. htaccess

1<?php 5

Jika Anda menambahkan baris di atas di. htaccess, yang akan memulai sesi secara otomatis di aplikasi PHP Anda

Cara Mendapatkan Id Sesi

Seperti yang telah kita bahas sebelumnya, server membuat nomor unik untuk setiap sesi baru. Jika Anda ingin mendapatkan session id, Anda dapat menggunakan fungsi 361, seperti yang ditunjukkan pada cuplikan berikut

1<?php 2session_start(); 3214<?php 1

Itu akan memberi Anda id sesi saat ini. Fungsi 3_61 menarik karena dapat mengambil satu argumen—id sesi. Jika Anda ingin mengganti ID sesi yang dihasilkan sistem dengan ID Anda sendiri, Anda dapat memberikannya ke argumen pertama dari fungsi 361 

1<?php 2273session_start(); 4<?php 1

Penting untuk diperhatikan bahwa fungsi ________11______61 harus ditempatkan sebelum panggilan 353 saat Anda ingin memulai sesi dengan ID sesi khusus

Cara Membuat Variabel Sesi

Di bagian ini, kita akan mengeksplorasi cara menginisialisasi variabel sesi di PHP

Seperti yang telah kita bahas sebelumnya, setelah sesi dimulai, larik super-global 352 diinisialisasi dengan informasi sesi yang sesuai. Secara default, ini diinisialisasi dengan larik kosong, dan Anda dapat menyimpan lebih banyak informasi dengan menggunakan key-value pair

Mari kita lihat skrip contoh berikut yang menunjukkan cara menginisialisasi variabel sesi

1<?php 2// start a session 3session_start(); 4 531<?php 033343536 3839session_start(); 0session_start(); 1session_start(); 2session_start(); 3session_start(); 4<?php 1

Seperti yang Anda lihat, kami telah memulai sesi di awal skrip menggunakan fungsi 353 . Setelah itu, kami menginisialisasi beberapa variabel sesi. Terakhir, kami telah mengakses variabel tersebut menggunakan 352 super-global

Saat Anda menyimpan data dalam sebuah sesi menggunakan 352 super-global, data tersebut akhirnya disimpan dalam file sesi yang sesuai di server yang dibuat saat sesi dimulai. Dengan cara ini, data sesi dibagikan ke beberapa permintaan

Seperti yang telah kita diskusikan, informasi sesi dibagikan di seluruh permintaan, dan dengan demikian variabel sesi yang diinisialisasi pada satu halaman juga dapat diakses dari halaman lain, hingga sesi berakhir. Umumnya, sesi berakhir saat browser ditutup

Cara Memodifikasi dan Menghapus Variabel Sesi

Anda dapat memodifikasi atau menghapus variabel sesi yang dibuat sebelumnya dalam aplikasi dengan cara yang sama seperti variabel PHP biasa

Mari kita lihat cara memodifikasi variabel sesi

1<?php 2session_start(); 3 443545<?php 047344936 13845session_start(); 0 5session_start(); 249session_start(); 4 505152<?php 1

Pada skrip di atas, kami telah memeriksa apakah variabel 370 disetel terlebih dahulu. Jika tidak disetel, kami akan menyetelnya ke 360, jika tidak, kami akan menambahnya sebesar 360. Jadi, jika Anda me-refresh halaman ini beberapa kali, Anda akan melihat bahwa penghitung bertambah satu setiap kali.  

Di sisi lain, jika Anda ingin menghapus variabel sesi, Anda dapat menggunakan fungsi ________11______73, seperti yang ditampilkan dalam cuplikan berikut

1<?php 2// start a session 3____session_start(); 4 _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________g

Dengan demikian, Anda tidak dapat lagi mengakses variabel 374 karena dihapus oleh fungsi 373 . Jadi begitulah cara Anda dapat mengubah informasi sesi

Cara Menghancurkan Sesi

Di bagian ini, kita akan melihat bagaimana Anda dapat menghancurkan sebuah sesi. Di bagian sebelumnya, kita telah membahas fungsi ________11______73, yang digunakan jika Anda ingin menghapus variabel sesi tertentu. Di sisi lain, jika Anda ingin menghapus semua data terkait sesi sekaligus, Anda dapat menggunakan fungsi 377 

Fungsi 3_77 menghapus semua yang disimpan di sesi saat ini. Karena itu, itu tidak menghapus variabel global yang terkait dengan sesi atau menghapus cookie sesi

Jadi, jika Anda menggunakan fungsi 3_77 untuk mengeluarkan pengguna, Anda harus menghapus variabel 352 dan juga menghapus cookie sesi. Jadi, cara yang disarankan untuk menghancurkan sesi sepenuhnya adalah

1<?php 2// start a session 3session_start(); 4 5<?php 13<?php 0 34<?php 1736<?php 1938<?php 21session_start(); 0<?php 23session_start(); 249session_start(); 4 50<?php 2952<?php 1

Penangan Sesi

Sejauh ini, kita telah membahas bagaimana Anda dapat melakukan operasi yang berbeda dengan variabel sesi. Pada bagian ini, kita akan membahas apa itu session handler dan bagaimana Anda dapat menggunakannya

Handler sesi PHP adalah mekanisme yang menginstruksikan PHP bagaimana seharusnya mengelola sesi. Penangan sesi default adalah sistem file, dan itu berarti bahwa PHP menyimpan sesi pada disk. Pada dasarnya, ini adalah file kecil di server yang diasosiasikan dengan id sesi unik. Itu adalah id yang sama yang disimpan dalam cookie sesi di browser klien

Penangan sesi default di PHP memberi Anda semua fitur yang diperlukan, tetapi terkadang Anda ingin menyimpan sesi secara berbeda. Misalnya, Anda mungkin ingin mengelola sesi di database, Redis, atau penyimpanan lainnya. Dalam hal ini, Anda perlu menerapkan penangan sesi khusus yang menggantikan perilaku default

Untuk memahami cara kerja penangan sesi khusus, kami akan membahas secara singkat bagaimana Anda dapat mengimplementasikan penangan sesi database yang mengelola sesi dalam database MySQL

Bagaimana Menerapkan Handler Sesi Database

Dalam siklus hidup sesi PHP, ada tahapan yang berbeda seperti buka, baca, tulis, dan tutup. Selain itu, ada dua tahap lagi. menghancurkan dan pengumpulan sampah. Jadi, saat Anda menerapkan penangan sesi khusus, Anda harus menangani setiap tahapan ini untuk mengelola data sesi dengan benar

Ada dua cara untuk mengimplementasikan penangan sesi khusus, Anda dapat menentukan fungsi callback untuk tahapan yang berbeda dalam siklus hidup sesi atau Anda dapat menulis kelas yang mengimplementasikan antarmuka 381. Dalam kedua kasus tersebut, Anda perlu menggunakan fungsi ________11______82 untuk menginisialisasi pengendali sesi khusus Anda. Dalam kasus kita, kita akan menggunakan penerapan antarmuka ________11______81

Dalam contoh kami, kami akan menyimpan sesi di database MySQL. Jadi mari buat tabel yang menyimpan data sesi dengan menggunakan cuplikan berikut

1<?php 332<?php 353<?php 374<?php 395<?php 41<?php 0<?php 43

Selanjutnya, mari kita lihat bagaimana tampilan session handler custom database kita

1<?php 2<?php 473454<?php 515<?php 0<?php 5434<?php 5636<?php 5838<?php 60session_start(); 0session_start(); 2<?php 63session_start(); 4<?php 5650<?php 6752<?php 69<?php 70<?php 71<?php 72<?php 73<?php 74<?php 75<?php 76<?php 60<?php 78<?php 79<?php 80<?php 81<?php 56<?php 83<?php 84<?php 85<?php 86<?php 87<?php 88<?php 89<?php 90<?php 91<?php 92<?php 93<?php 94<?php 95<?php 96________20_____

Kelas penangan sesi khusus kami 384 menerapkan antarmuka 381 . Oleh karena itu, harus menerapkan metode yang dideklarasikan di antarmuka ________11______81. Kita akan melihat metode ini satu per satu untuk memahami cara kerjanya masing-masing

1<?php 542<?php 563<?php 584<?php 60

Pertama, untuk menggunakan kode ini, pastikan untuk mengganti 387, 388, dan placeholder lain dengan nilai aktual dalam metode ________11______89 

1<?php 632<?php 563<?php 674__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Saat sesi dimulai, metode ________11______90 dipanggil. Ia mengembalikan 3_91 jika koneksi database berhasil. Jika ada masalah saat menyiapkan koneksi database, ini mengembalikan 392

1<?php 802<?php 563<?php 844<?php 865<?php 88<?php 0<?php 9034<?php 9236<?php 9438<?php 96session_start(); 0session_start(); 2<?php 99session_start(); 42015020352<?php 75<?php 70<?php 60

Selanjutnya, PHP memanggil metode 3_93 untuk membaca data sesi. Metode 3_93 menerima id sesi sebagai argumen pertama. Kami akan memeriksa apakah ada entri yang tersedia untuk ID sesi ini di 395 tabel. Jika ada, kami akan mengembalikan data sesi;

12102<?php 563<?php 8442165218<?php 0<?php 9034<?php 963638<?php 69session_start(); 0201session_start(); 2<?php 73session_start(); 4<?php 7550<?php 60

Saat PHP perlu menyimpan atau menutup sesi, PHP akan memanggil metode 396 . Ini digunakan untuk menulis data sesi dalam database. Kami telah menggunakan sintaksis 3_97 untuk memastikan bahwa jika ada entri, entri tersebut akan diperbarui;

12912<?php 5632954<?php 60

Metode 3_98 dipanggil setelah metode 396 dipanggil. Ia bekerja mirip dengan destruktor di kelas. Dalam kasus kami, tidak ada hal khusus yang perlu dilakukan dalam metode ________11______98 

12362<?php 563<?php 8442425<?php 88<?php 0<?php 9034<?php 963638<?php 69session_start(); 0201session_start(); 2<?php 73session_start(); 4<?php 7550<?php 60

Metode session_start(); _01 dipanggil saat sesi dimusnahkan dengan fungsi 377 atau session_start(); 03 . Dalam metode ini, data sesi dihapus dari database jika ada

12622<?php 56326645<?php 84<?php 02713427336<?php 9038<?php 96session_start(); 0session_start(); 2<?php 69session_start(); 420150<?php 7352<?php 75<?php 70<?php 60

Saat PHP menjalankan pengumpul sampah secara berkala, metode session_start(); 04 dipanggil. Variabel session_start(); 05 memiliki nilai opsi konfigurasi session_start(); 06 di php. file ini. Dalam metode ini, kami akan menghapus semua sesi yang kedaluwarsa sebagai bagian dari proses pengumpulan sampah

Menggunakan Kelas Handler Sesi MySQL

Sekarang, mari kita lihat cara menggunakan kelas penangan ________11______84

134023423session_start(); 4346

Seperti yang Anda lihat, kita hanya perlu menginisialisasi kelas 384 dan meneruskannya ke fungsi 382 untuk menginstruksikan PHP bahwa ia perlu menggunakan kelas 384 untuk pengelolaan sesi. Selanjutnya, kita telah memanggil fungsi 353 untuk memulai sesi. Terakhir, kami telah menginisialisasi variabel sesi untuk tujuan pengujian

Jika semuanya berjalan lancar, Anda akan melihat entri sesi di session_start(); 12 tabel seperti yang ditunjukkan pada tangkapan layar berikut

Dan dengan itu, Anda telah membuat penangan sesi khusus yang berfungsi yang mengelola sesi dalam database

Kesimpulan

Pada artikel ini, kami telah menjelajahi dasar-dasar penanganan sesi di PHP. Ini adalah konsep utama yang memungkinkan Anda menyimpan informasi di seluruh halaman web

Di paruh pertama artikel, kami membahas konsep dasar sesi, dan selanjutnya kami membuat beberapa contoh PHP untuk mendemonstrasikan bagaimana Anda dapat membuat dan menghancurkan sesi serta memanipulasi variabel sesi.

Apa yang bisa disimpan dalam satu sesi?

Sesi menyimpan variabel dan nilainya di dalam file dalam direktori sementara di server. Cookie disimpan di komputer pengguna sebagai file teks. Sesi berakhir ketika pengguna keluar dari aplikasi atau menutup browser webnya.

Di mana sesi menyimpan data dalam PHP?

Secara default, PHP menggunakan penangan penyimpanan file internal yang diatur oleh sesi. save_handler. Ini menyimpan data sesi di server di lokasi yang ditentukan oleh sesi. direktif konfigurasi save_path .

Bisakah saya menyimpan objek dalam sesi PHP?

Fungsi serialize() dalam PHP dapat digunakan sebelum menyimpan objek , dan fungsi unserialize() dapat dipanggil saat objek perlu diambil dari sesi. Fungsi mengubah representasi yang dapat disimpan dari nilai tertentu menjadi urutan bit.

Bagaimana data disimpan dalam variabel sesi?

Penyimpanan sesi adalah pilihan populer untuk menyimpan data di browser. Ini memungkinkan pengembang untuk menyimpan dan mengambil nilai yang berbeda. Tidak seperti penyimpanan lokal, penyimpanan sesi hanya menyimpan data untuk sesi tertentu. Data dihapus setelah pengguna menutup jendela browser.

Postingan terbaru

LIHAT SEMUA