Örnekle Codeigniter'da Oturum Nasıl Ayarlanır
CodeIgniter Oturum Yönetimi
Daha önce masaüstü uygulamaları geliştirdiyseniz, muhtemelen global bir değişken tanımlayabileceğinizi, ona bir değer atayabileceğinizi ve bunu uygulamanın yaşam döngüsü boyunca birden fazla (1) açıp kapatabileceğinizi ve her isteğin erişime sahip olacağını biliyorsunuzdur. küresel değişken.
Başka bir deyişle uygulamanın durumu korunur. Yani, giriş yaptığınızda şirket adını global bir değişkene ayarladıysanız, giriş formunu kapattığınızda bile şirket adının bu durumu korunur.
HTTP, yukarıda anlattığımız senaryodan biraz farklı çalışır. Vatansızdır. Yani, bir istekte ne yaparsanız yapın, bir sonraki istekte ısrar etmeyin. T
Bu soruna geçici bir çözüm bulmaya çalışın. PHP'de iki (2) çözümümüz var. Kullanıcının bilgisayarına yerleştirilen küçük dosyalar olan çerezlerle çalışabileceğimiz gibi, çerezlere benzeyen ancak sunucuda depolanan ve çerezlerden daha büyük kapasiteye sahip olan oturumlarla da çalışabiliriz.
Oturumlar ne zaman kullanılmalı?
Oturumlar genellikle kullanıcının sayfadan sayfaya aktivitelerini bilmek istediğinizde faydalıdır. Örneğin, web sitesinde korumalı bir alanınız olduğunu varsayalım. Kullanıcıların her sayfada oturum açması gerekmez. Kullanıcının bir kez oturum açmasına ve ayrıntılarını bir oturum değişkeninde saklamasına izin verebilir ve daha sonra aynı verileri daha sonraki isteklerde yeniden kullanabilirsiniz. Diğer kullanım durumları arasında bir alışveriş sistemi üzerinde çalışırken ve kullanıcının alışveriş sepetine ürün eklemesi gerektiğinde yer alır.
Alternatif olarak CodeIgniter, verileri bir sonraki istekte yalnızca bir kez kullanılabilir hale getirmek için oturumları da kullanır. Bu kullanışlıdır, bir veritabanı kaydını düzenleyebilir ve güncelleyebilirsiniz ve kullanıcıya başka bir sayfaya yönlendirildiklerinde bazı geri bildirimler vermek isteyebilirsiniz.
CI Oturumlarıyla diğer sayfalara Flash Mesajlar Gönderme
Bu bölümde oturum kitaplığını kullanarak diğer sayfalara hızlı mesaj göndermeyi öğreneceksiniz. CodeIgniter
SessionController'da yeni bir dosya oluşturun
application/controllers/SessionController.php
Aşağıdaki kodu ekleyin
<?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')); } }
İŞTE,
- Class SessionController, CI_Controller'ı genişletir {…}, SessionController sınıfını tanımlar ve ana denetleyici sınıfını genişletir.
- public function __construct() {…} üst sınıfı başlatan yapıcı yöntemini tanımlar ve url yardımcısını ve oturum kitaplığını yükler.
- public function index() {…}, oturum indeksi görünümünü yükleyen oturum indeksi yöntemini tanımlar.
- genel işlev flash_message(){…}, flash verilerini ayarlayan ve ardından flash_index yoluna yönlendiren flash mesaj yöntemini tanımlar
Şimdi oturum verilerinin değerini gösterecek görünümü oluşturalım.
Uygulamada/görünümlerde yeni bir dizin oturumu oluşturun
application/views/sessions'da yeni bir index.php dosyası oluşturun
Aşağıdaki kodu ekleyin
<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>
İŞTE,
session->userdata('msg');?> msg anahtarı ile oturum verilerinin değerini alır ve tarayıcıda görüntüler.
Şimdi oturum flash yöntemimiz için rotaları oluşturalım
application/config/routes.php dosyasını açın
Aşağıdaki satırları ekleyin
$route['flash_index'] = 'session controller'; $route['flash_message'] = 'session controller/flash_message';
Şimdi yerleşik sunucuyu başlatalım PHP ve flaş mesajlarımızı test edin
Terminali aç
Aşağıdaki komutu çalıştırın
cd C:\Sites\ci-app php -S localhost:3000
İŞTE,
Yukarıdaki komut uygulama kodu dizinine göz atar ve yerleşik sunucuyu 3000 numaralı bağlantı noktasında başlatır.
Not: Uygulama yolunun CodeIgniter'ı indirdiğiniz yolla eşleşmesi gerekir ve bilgisayarınızda ücretsiz olan herhangi bir bağlantı noktası numarasını kullanabilirsiniz. 3000 numaralı bağlantı noktasını kullanmanıza gerek yoktur.
Aşağıdaki URL'yi web tarayıcınıza yükleyin: http://localhost:3000/flash_message
Aşağıdaki URL'ye yönlendirileceksiniz ve aşağıdaki sonuçları alacaksınız: http://localhost:3000/flash_index
Web tarayıcınızın yenile düğmesine tıklayın veya F5 tuşuna basın
Şimdi aşağıdaki sonuçları alacaksınız
Kullanıcı Verilerini CI Oturumlarında Depolama
Şimdi biraz daha gelişmiş bir örneğe bakalım. Bunu basitleştirmek için, kullanıcı kimlik doğrulamasını simüle edeceğiz ve veritabanındaki kullanıcı kaydının ve gönderilen şifrenin doğrulanmasının gerçek uygulamasını yapmayacağız.
Rotalarla başlayalım
application/config dosyasında bulunan Routes.php dosyasını açın
Aşağıdaki rotaları ekleyin
$route['login'] = 'sessioncontroller/login'; $route['authenticate'] = 'sessioncontroller/authenticate'; $route['settings'] = 'sessioncontroller/settings'; $route['dashboard'] = 'sessioncontroller/dashboard'; $route['logout'] = 'sessioncontroller/logout';
İŞTE,
- $route['login'] = 'sessioncontroller/login'; oturum açma formunu görüntüleyen rotayı tanımlar
- $route['authenticate'] = 'sessioncontroller/authenticate'; Başarılı kullanıcı oturum açma işlemini simüle eden rotayı tanımlar ve oturum oturum açma verilerini ayarlar.
- $route['settings'] = 'sessioncontroller/settings'; yalnızca oturum açmış kullanıcıların erişebilmesi gereken korumalı bir sayfayı tanımlar
- $route['dashboard'] = 'sessioncontroller/dashboard'; Yalnızca oturum açmış kullanıcıların erişebilmesi gereken korumalı bir sayfayı tanımlar.
- $route['logout'] = 'sessioncontroller/logout'; oturum verilerini yok ederek kullanıcının oturumunu kapatır
Şimdi SessionController'ı güncelleyelim
Application/controllers/SessionController.php dosyasını açın
Aşağıdaki yöntemleri ekleyin
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')); }
İŞTE,
- public function check_auth($page) {…} kullanıcının oturum açıp açmadığını kontrol eden ve ardından sayfaya erişime izin veren yöntemi tanımlar. Kullanıcı oturum açmadıysa kullanıcı bir flash mesajla oturum açma sayfasına yönlendirilir.
- public function login() {…}, oturumlar dizininde bulunan oturum açma görünümünü yükler.
- public function authenticate() {…}, signed_in ve username anahtarları için oturum kullanıcı verilerini ayarlar. NOT: Veritabanına karşı herhangi bir oturum açma ayrıntısını doğrulamıyoruz. Sadece gönderilen ayrıntıların doğru olduğunu varsayıyoruz ve oturum verilerini ayarlıyoruz.
- public function Dashboard() {…}, $this->check_auth('dashboard'); çağrıldıktan sonra kontrol paneli sayfasını yükler. bu, log_in oturum anahtarının ayarlandığını doğrular.
- public function settings() {…} yine korunan ayarlar sayfasını yükler
- public function logout() {…}, oturum verilerini yok eder ve kullanıcının oturumunu kapatır. Yöntem aynı zamanda giriş sayfasına da yönlendirir
CodeIgniter Oturum Görünümleri
application/views/sessions dizininde aşağıdaki görünümleri oluşturun
- pano.php
- login.php
- settings.php
Aşağıdaki kodu dashboard.php'ye ekleyin
<!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://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css"> </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('username');?></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>
İŞTE,
session->userdata('username');?> kimlik doğrulama yönteminde belirlediğimiz kullanıcı adını görüntüler
Aşağıdaki kodu login.php'ye ekleyin
<!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://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css"> </head> <body> <div class="container"> <div class="column"> <p><?=$this->session->userdata('msg');?></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="passport" 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>
İŞTE,
Giriş formu rotayı doğrulamak için gönderilir.
Aşağıdaki kodu settings.php'ye ekleyin
<!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://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css"> </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>
Görüşlerimiz bu kadar. Şimdi uygulamamızı test edelim.
Bu derste yerleşik PHP web sunucusunu kullanıyoruz, ancak siz PHP'yi destekleyen herhangi bir web sunucusunu kullanabilirsiniz.
Terminali aç
Aşağıdaki komutu çalıştırın
cd C:\Sites\ci-app php -S localhost:3000
İŞTE,
Yukarıdaki komut uygulama kodu dizinine göz atar ve yerleşik sunucuyu 3000 numaralı bağlantı noktasında başlatır.
Not: Uygulama yolunun CodeIgniter'ı indirdiğiniz yolla eşleşmesi gerekir ve bilgisayarınızda ücretsiz olan herhangi bir bağlantı noktası numarasını kullanabilirsiniz. 3000 numaralı bağlantı noktasını kullanmanıza gerek yoktur.
Aşağıdaki URL'yi web tarayıcınızda açın: http://localhost:3000/dashboard
aşağıdaki sayfaya yönlendirileceksiniz
Giriş düğmesine tıklayın
Aşağıdaki sonuçları göreceksiniz
Giriş yaptıktan sonra artık oturum verilerini görebiliyoruz.
ÖZET
Bu eğitimde, CodeIgniter oturum kitaplığının temellerini öğrendiniz ve geçici verileri hızlı mesajlar olarak depolamak için onu nasıl kullanacağınızı ve daha kalıcı verileri, yani kullanıcı oturum açma verilerini depolamak için nasıl kullanacağınızı öğrendiniz.