Ö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

Diğer sayfalara Flash Mesaj Gönderme

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

Diğer sayfalara Flash Mesaj Gönderme

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

CodeIgniter Oturum Görünümleri

Giriş düğmesine tıklayın

Aşağıdaki sonuçları göreceksiniz

CodeIgniter Oturum Görünümleri

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.