Oturum Nasıl Ayarlanır? CodeÖrnekli Ateşleyici
⚡ Akıllı Özet
CodeIgniter Oturum Yönetimi, kullanıcı verilerini durumsuz HTTP istekleri arasında saklayarak bir uygulamanın oturum açmış bir kullanıcıyı, sepet öğelerini veya tek seferlik flaş mesajları hatırlamasını sağlar. Bu örnek, flaş mesajlaşma ve simüle edilmiş bir oturum açma işlemini Igniter kullanarak oluşturur. CodeIgniter oturum kütüphanesi.

CodeIgniter Oturum Yönetimi
Daha önce masaüstü uygulamaları geliştirdiyseniz, global bir değişken tanımlayabileceğinizi, ona bir değer atayabileceğinizi ve uygulamanın yaşam döngüsü boyunca kullanabileceğinizi muhtemelen biliyorsunuzdur. Birden fazla formu açıp kapatırken, her istek global değişkene erişebilecektir.
Başka bir deyişle, uygulamanın durumu korunur. Yani, giriş yaptığınızda şirket adını global bir değişkene atadıysanız, giriş formunu kapattıktan sonra bile şirket adının bu durumu korunur.
HTTP, az önce anlattığımız senaryodan biraz farklı çalışır. Durumsuzdur. Yani, bir istekte yaptığınız işlemler bir sonraki istekte kalıcı olmaz.
Bu sorunu aşmak için PHP'de iki (2) çözümümüz var. Ya kullanıcının bilgisayarına yerleştirilen küçük dosyalar olan çerezlerle çalışabiliriz ya da çerezlere benzer ancak sunucuda depolanan ve çerezlerden daha büyük kapasiteye sahip olan oturumlarla çalışabiliriz.
Oturumlar ne zaman kullanılmalı?
Oturumlar genellikle kullanıcının sayfadan sayfaya yaptığı etkinlikleri takip etmek istediğinizde kullanışlıdır. Örneğin, web sitenizde korumalı bir alanınız olduğunu varsayalım. Kullanıcıların her sayfada tekrar giriş yapmasına gerek yoktur. Kullanıcının bir kez giriş yapmasına izin verip bilgilerini bir oturum değişkeninde saklayabilir ve daha sonraki isteklerde aynı verileri tekrar kullanabilirsiniz. Diğer kullanım alanları arasında bir mağaza üzerinde çalışırken görülen durumlar yer alır.ping Sistemde kullanıcının mağazaya ürün eklemesi gerekiyor.ping araba.
Seçenek olarak ise, CodeIgniter ayrıca, verilerin bir sonraki istekte yalnızca bir kez kullanılabilir olmasını sağlamak için oturumları kullanır. Bu, bir veritabanı kaydını düzenleyip güncellediğinizde ve kullanıcı başka bir sayfaya yönlendirildiğinde ona geri bildirim vermek istediğinizde faydalıdır.
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. Codeateşleyici.
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örüntüleyecek olan görünümü oluşturalım.
application/views klasöründe sessions adında yeni bir dizin 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');?>` ifadesi, `msg` anahtarına sahip oturum verilerinin değerini alır ve tarayıcıda görüntüler.
Şimdi oturum flaşlama 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'] = 'sessioncontroller'; $route['flash_message'] = 'sessioncontroller/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, uygulamayı indirdiğiniz yol ile aynı olması gerekir. CodeIgniter programını kullanabilirsiniz ve bilgisayarınızda boş olan herhangi bir port numarasını kullanabilirsiniz. 3000 numaralı portu kullanmanız gerekmez.
Aşağıdakileri yükleyin URL Web tarayıcınızda: http://localhost:3000/flash_message
Aşağıdaki sayfaya yönlendirileceksiniz. URLve 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. Basitleştirmek için, kullanıcı kimlik doğrulamasını simüle edeceğiz ve veritabanındaki kullanıcı kaydını ve gönderilen şifreyi doğrulama işleminin gerçek uygulamasını yapmayacağız.
Güzergahlarla 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) {…} yöntemi, kullanıcının giriş yapıp yapmadığını kontrol eder ve ardından sayfaya erişime izin verir. Kullanıcı giriş yapmamışsa, kullanıcıya bir uyarı mesajı ile giriş sayfasına yönlendirme yapılır.
- public function login() {…} oturumlar dizininde bulunan giriş 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() {…} fonksiyonu, `$this->check_auth('dashboard');` çağrısından sonra `logged_in` oturum anahtarının ayarlanmış olduğunu doğrulayarak kontrol paneli sayfasını yükler.
- public function settings() {…} fonksiyonu, korumalı olan 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: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>
İŞ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: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>
İŞTE,
Giriş formu kimlik doğrulama rotasına 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: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>
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, uygulamayı indirdiğiniz yol ile aynı olması gerekir. CodeIgniter programını kullanabilirsiniz ve bilgisayarınızda boş olan herhangi bir port numarasını kullanabilirsiniz. 3000 numaralı portu kullanmanız gerekmez.
Aşağıdakileri aç URL Web tarayıcınızda: 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.




