Cara Mengatur Sesi di CodePemantik Api dengan Contoh
⚡ Ringkasan Cerdas
CodeIgniter Session Management menyimpan data pengguna di seluruh permintaan HTTP tanpa status, memungkinkan aplikasi untuk mengingat pengguna yang masuk, item keranjang belanja, atau pesan kilat satu kali. Contoh ini membangun pesan kilat dan simulasi login menggunakan CodePustaka sesi Igniter.
CodeManajemen Sesi Igniter
Jika Anda pernah mengembangkan aplikasi desktop sebelumnya, Anda mungkin tahu bahwa Anda dapat mendefinisikan variabel global, menetapkan nilai padanya, dan menggunakannya sepanjang siklus hidup aplikasi. Dengan membuka dan menutup lebih dari satu formulir, setiap permintaan akan memiliki akses ke variabel global tersebut.
Dengan kata lain, status aplikasi dipertahankan. Artinya, jika saat Anda masuk Anda menetapkan nama perusahaan ke variabel global, maka bahkan setelah Anda menutup formulir masuk, status nama perusahaan tersebut tetap tersimpan.
HTTP bekerja sedikit berbeda dari skenario yang baru saja kita jelaskan. HTTP bersifat stateless. Artinya, apa pun yang Anda lakukan dalam satu permintaan tidak akan tersimpan dalam permintaan berikutnya.
Untuk mengatasi masalah ini, kita memiliki dua (2) solusi di PHP. Kita dapat bekerja dengan cookie, yaitu file kecil yang ditempatkan di komputer pengguna, atau bekerja dengan sesi, yang mirip dengan cookie tetapi disimpan di server dan memiliki kapasitas lebih besar daripada cookie.
Kapan menggunakan sesi?
Sesi biasanya berguna ketika Anda ingin mengetahui aktivitas pengguna dari satu halaman ke halaman lain. Misalnya, katakanlah Anda memiliki area yang dilindungi di situs web. Pengguna tidak perlu masuk di setiap halaman. Anda dapat membiarkan pengguna masuk sekali dan menyimpan detail mereka dalam variabel sesi, kemudian menggunakan kembali data yang sama pada permintaan selanjutnya. Kasus penggunaan lainnya termasuk saat mengerjakan toko online.ping sistem dan pengguna harus menambahkan barang ke toko.ping gerobak.
Kalau tidak, CodeIgniter juga menggunakan sesi untuk membuat data hanya tersedia sekali pada permintaan berikutnya. Ini berguna ketika Anda telah mengedit dan memperbarui catatan basis data, dan Anda ingin memberikan umpan balik kepada pengguna ketika mereka dialihkan ke halaman lain.
Mengirim Pesan Flash ke halaman lain dengan Sesi CI
Di bagian ini, Anda akan belajar tentang mengirim pesan flash ke halaman lain menggunakan perpustakaan sesi di CodeAlat penyala.
Buat file baru SessionController di
application/controllers/SessionController.php
Tambahkan kode berikut
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class SessionController extends CI_Controller { public function __construct() { parent:: __construct(); $this->load->helper('url'); $this->load->library('session'); } public function index() { $this->load->view('sessions/index'); } public function flash_message(){ $this->session->set_flashdata('msg', 'Welcome to CodeIgniter Flash Messages'); redirect(base_url('flash_index')); } }
SINI,
- class SessionController extends CI_Controller {…} mendefinisikan kelas SessionController dan memperluas kelas pengontrol induk.
- public function __construct() {…} mendefinisikan metode konstruktor yang menginisialisasi kelas induk, dan memuat url helper dan perpustakaan sesi.
- public function index() {…} mendefinisikan metode indeks sesi yang memuat tampilan indeks sesi.
- public function flash_message(){…} mendefinisikan metode pesan flash yang mengatur data flash kemudian dialihkan ke rute flash_index
Sekarang mari kita buat tampilan yang akan menampilkan nilai data sesi.
Buat direktori baru bernama sessions di application/views
Buat file baru index.php di application/views/sessions
Tambahkan kode berikut
<html>
<head>
<title>Code Igniter Flash Session</title>
</head>
<body>
<p>The session value of msg is <b> <?= $this->session->userdata('msg');?> </b></p>
</body>
</html>
SINI,
`session->userdata('msg');?>` mengambil nilai data sesi dengan kunci `msg` dan menampilkannya di browser.
Sekarang mari kita buat rute untuk metode flash sesi kita.
Buka aplikasi/config/routes.php
Tambahkan baris berikut
$route['flash_index'] = 'sessioncontroller'; $route['flash_message'] = 'sessioncontroller/flash_message';
Sekarang mari kita mulai server bawaan untuk PHP dan uji pesan flash kami
Buka terminalnya
Jalankan perintah berikut
cd C:\Sites\ci-app php -S localhost:3000
SINI,
Perintah di atas menelusuri direktori kode aplikasi dan memulai server bawaan pada port 3000.
Catatan: jalur aplikasi harus sesuai dengan jalur tempat Anda mengunduhnya. CodeGunakan Igniter, dan Anda dapat menggunakan nomor port apa pun yang tersedia di komputer Anda. Tidak perlu menggunakan port 3000.
Muat yang berikut ini URL di peramban web Anda: http://localhost:3000/flash_message
Anda akan dialihkan ke halaman berikut. URL, dan Anda akan mendapatkan hasil berikut: http://localhost:3000/flash_index
Klik tombol segarkan browser web Anda atau tekan F5
Anda sekarang akan mendapatkan hasil berikut
Menyimpan Data Pengguna dalam Sesi CI
Sekarang mari kita lihat contoh yang sedikit lebih canggih. Agar lebih sederhana, kita akan mensimulasikan otentikasi pengguna dan tidak melakukan implementasi sebenarnya dari verifikasi catatan pengguna di basis data dan kata sandi yang dikirimkan.
Mari kita mulai dengan rute-rutenya.
Buka rute.php yang terletak di aplikasi/config
Tambahkan rute berikut
$route['login'] = 'sessioncontroller/login'; $route['authenticate'] = 'sessioncontroller/authenticate'; $route['settings'] = 'sessioncontroller/settings'; $route['dashboard'] = 'sessioncontroller/dashboard'; $route['logout'] = 'sessioncontroller/logout';
SINI,
- $route['login'] = 'sessioncontroller/login'; mendefinisikan rute yang menampilkan formulir login
- $route['authenticate'] = 'sessioncontroller/authenticate'; mendefinisikan rute yang mensimulasikan login pengguna yang berhasil dan mengatur data login sesi.
- $route['settings'] = 'pengontrol sesi/pengaturan'; mendefinisikan halaman terlindungi yang hanya dapat diakses oleh pengguna yang login
- $route['dashboard'] = 'sessioncontroller/dasbor'; mendefinisikan halaman terlindungi yang hanya dapat diakses oleh pengguna yang login.
- $route['logout'] = 'sessioncontroller/logout'; mengeluarkan pengguna dengan menghancurkan data sesi
Sekarang mari kita perbarui SessionController.
Buka aplikasi/controllers/SessionController.php
Tambahkan metode berikut
public function check_auth($page) { if (!$this->session->userdata('logged_in')) { $this->session->set_flashdata('msg', "You need to be logged in to access the $page page."); redirect('login'); } } public function login() { $this->load->view('sessions/login'); } public function authenticate() { $this->session->set_userdata('username', 'John Doe'); $this->session->set_userdata('logged_in', TRUE); redirect(base_url('dashboard')); } public function dashboard() { $this->check_auth('dashboard'); $this->load->view('sessions/dashboard'); } public function settings() { $this->check_auth('settings'); $this->load->view('sessions/settings'); } public function logout() { $this->session->unset_userdata('username'); $this->session->unset_userdata('logged_in'); redirect(base_url('login')); }
SINI,
- public function check_auth($page) {…} mendefinisikan metode yang memeriksa apakah pengguna sudah login, kemudian memberikan akses ke halaman tersebut. Jika pengguna belum login, maka pengguna akan dialihkan ke halaman login dengan pesan singkat.
- public function login() {…} memuat tampilan login yang terletak di direktori sessions.
- fungsi publik authenticate() {…} menetapkan data pengguna sesi untuk kunci logged_in dan username. CATATAN: Kami tidak memverifikasi detail login apa pun terhadap database. Kami hanya berasumsi bahwa detail yang dikirimkan baik-baik saja dan menetapkan data sesi.
- public function dashboard() {…} memuat halaman dasbor setelah memanggil $this->check_auth('dashboard'); yang memverifikasi bahwa kunci sesi logged_in telah diatur.
- public function settings() {…} memuat halaman pengaturan, yang juga dilindungi
- public function logout() {…} menghancurkan data sesi dan mengeluarkan pengguna. Metode ini juga mengalihkan ke halaman login
CodeTampilan Sesi Igniter
Buat tampilan berikut di application/views/sessions
- dashboard.php
- masuk.php
- settings.php
Tambahkan kode berikut ke dashboard.php
<!DOCTYPE html> <html> <head> <title>Dashboard</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <nav class="navbar" role="navigation" aria-label="main navigation"> <div id="navbarBasicExample" class="navbar-menu"> <div class="navbar-start"> <a href="<?= site_url('dashboard')?>" class="navbar-item is-active">Dashboard</a> <a href="<?= site_url('settings')?>" class="navbar-item">Settings</a> </div> <div class="navbar-end"> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link"><?=$this->session->userdata(3);?></a> <div class="navbar-dropdown"> <a class="navbar-item">My Profile</a> <hr class="navbar-divider"> <a class="navbar-item">Sign out</a> </div> </div> </div> </div> </nav> <h3>Welcome Page</h3> </div> </div> </body> </html>
SINI,
session->userdata('username');?> menampilkan nama pengguna yang kita atur dalam metode otentikasi
Tambahkan kode berikut ke login.php
<!DOCTYPE html> <html> <head> <title>Login</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <p><?=$this->session->userdata(1);?></p> <form method="post" action="<?= site_url('authenticate')?>"> <div class="field"> <label class="label">Username</label> <div class="control"> <input class="input" type="text" placeholder="Text input"> </div> </div> <div class="field"> <label class="label">Password</label> <div class="control"> <input class="input" type="password" placeholder="Text input"> </div> </div> <div class="field is-grouped"> <div class="control"> <button class="button is-success">Login</button> </div> </div> </form> </div> </div> </body> </html>
SINI,
Formulir login dikirim ke jalur autentikasi.
Tambahkan kode berikut ke settings.php
<!DOCTYPE html> <html> <head> <title>Settings</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <nav class="navbar" role="navigation" aria-label="main navigation"> <div id="navbarBasicExample" class="navbar-menu"> <div class="navbar-start"> <a href="<?= site_url('dashboard')?>" class="navbar-item">Dashboard</a> <a href="<?= site_url('settings')?>" class="navbar-item">Settings</a> </div> <div class="navbar-end"> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link">Jim Jones</a> <div class="navbar-dropdown"> <a href="#" class="navbar-item">My Profile</a> <hr class="navbar-divider"> <a href="<?= site_url('logout')?>" class="navbar-item">Sign out</a> </div> </div> </div> </div> </nav> <h3>Settings Page</h3> </div> </div> </body> </html>
Demikianlah pandangan kami. Sekarang mari kita uji aplikasi kita.
Dalam tutorial ini, kami menggunakan server web PHP bawaan, tetapi Anda dapat menggunakan server web apa pun yang mendukung PHP.
Buka terminalnya
Jalankan perintah berikut
cd C:\Sites\ci-app php -S localhost:3000
SINI,
Perintah di atas menelusuri direktori kode aplikasi dan memulai server bawaan pada port 3000.
Catatan: jalur aplikasi harus sesuai dengan jalur tempat Anda mengunduhnya. CodeGunakan Igniter, dan Anda dapat menggunakan nomor port apa pun yang tersedia di komputer Anda. Tidak perlu menggunakan port 3000.
Buka yang berikut ini URL di peramban web Anda: http://localhost:3000/dashboard
Anda akan dialihkan ke halaman berikut.
Klik tombol Masuk
Anda akan melihat hasil berikut ini
Setelah kita login, sekarang kita dapat melihat data sesi.





