Hogyan állítsuk be a munkamenetet Codegyújtó példával

CodeIgniter munkamenet-kezelés

Ha korábban már fejlesztett asztali alkalmazásokat, akkor valószínűleg tudja, hogy definiálhat egy globális változót, értéket rendelhet hozzá, és használhatja az alkalmazás teljes életciklusa során, egynél több (1) megnyitásakor és bezárásakor, és minden kérés hozzáférhet a a globális változó.

Más szóval, az alkalmazás állapota megmarad. Ez azt jelenti, hogy ha bejelentkezéskor a cégnevet globális változóra állítja, akkor a bejelentkezési űrlap bezárása után is megmarad a cégnév állapota.

A HTTP kissé eltér az imént leírt fenti forgatókönyvtől. Ez hontalan. Ez azt jelenti, hogy bármit teszel az egyik kérésben, az nem marad ki a következő kérésnél. T

o megkerülni ezt a problémát. Két (2) megoldásunk van PHP-ben. Dolgozhatunk a cookie-kkal, amelyek a felhasználó számítógépén elhelyezett kis fájlok, vagy olyan munkamenetekkel, amelyek hasonlóak a cookie-khoz, de ehelyett a szerveren tárolódnak, és nagyobb kapacitással rendelkeznek, mint a cookie-k.

Mikor kell használni a munkameneteket?

A munkamenetek általában akkor hasznosak, ha oldalról oldalra szeretnéd nyomon követni a felhasználó tevékenységét. Tegyük fel például, hogy van egy védett terület a weboldalon. A felhasználóknak nem kell minden oldalon bejelentkezniük. Hagyhatod, hogy a felhasználó egyszer bejelentkezzen, és adatait egy munkamenet-változóban tárold, majd ugyanazokat az adatokat felhasználhatod a további kérésekhez. További felhasználási esetek lehetnek például egy webáruházon végzett munka.ping a rendszerben, és a felhasználónak hozzá kell adnia a termékeket a bolthozping helyezése.

Alternatív módon, CodeAz Igniter munkameneteket is használ, hogy az adatokat csak egyszer, a következő kéréskor tegye elérhetővé. Ez akkor hasznos, ha szerkeszthetsz és frissíthetsz egy adatbázisrekordot, és visszajelzést szeretnél küldeni a felhasználónak, amikor egy másik oldalra átirányítják.

Flash-üzenetek küldése más oldalaknak a CI Sessions segítségével

Ebben a részben megtudhatja, hogyan küldhet gyorsüzeneteket más oldalakra a munkamenet-könyvtár használatával CodeGyújtó

Hozzon létre egy új SessionController fájlt

application/controllers/SessionController.php

Adja hozzá a következő kódot

<?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'));
    }
}

ITT,

  • osztály SessionController kiterjeszti A CI_Controller {…} meghatározza a SessionController osztályt és kiterjeszti a szülővezérlő osztályt.
  • public függvény __construct() {…} határozza meg a konstruktor metódust, amely inicializálja a szülőosztályt, és betölti az url helpert és a session könyvtárat.
  • public function index() {…} határozza meg a session index metódust, amely betölti a session index nézetet.
  • nyilvános függvény flash_message(){…} határozza meg a flash üzenet metódusát, amely beállítja a flash adatokat, majd átirányítja a flash_index útvonalra

Most hozzuk létre azt a nézetet, amely megjeleníti a munkamenet adatainak értékét.

Hozzon létre egy új címtár-munkamenetet az alkalmazásban/nézetekben

Hozzon létre egy új index.php fájlt az application/views/sessions mappában

Adja hozzá a következő kódot

<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>

ITT,

A session->userdata('msg');?> lekéri a munkamenet adatainak értékét az msg kulcsával, és megjeleníti a böngészőben.

Most hozzuk létre a munkamenet flash módszerünk útvonalait

Nyissa meg az application/config/routes.php fájlt

Adja hozzá a következő sorokat

$route['flash_index'] = 'session controller';
$route['flash_message'] = 'session controller/flash_message';

Most indítsuk el a beépített szervert a számára PHP és tesztelje a gyorsüzeneteinket

Nyissa meg a terminált

Futtassa a következő parancsot

cd C:\Sites\ci-app
php -S localhost:3000

ITT,

A fenti parancs tallózással az alkalmazás kódkönyvtárába lép, és elindítja a beépített szervert a 3000-es porton.

Megjegyzés: az alkalmazás elérési útjának meg kell egyeznie a letöltési útvonallal CodeIgniter, és a számítógépén található bármelyik szabad portszámot használhatja. Nem szükséges a 3000-es portot használni.

Töltsd be a következőket URL a webböngésződben: http://localhost:3000/flash_message

A következő oldalra leszel átirányítva URL, és a következő eredményeket kapod: http://localhost:3000/flash_index

Flash üzenetek küldése más oldalakra

Kattintson a böngésző frissítési gombjára, vagy nyomja meg az F5 billentyűt

Most a következő eredményeket kapja

Flash üzenetek küldése más oldalakra

Felhasználói adatok tárolása a CI-munkamenetekben

Nézzünk most egy kicsit fejlettebb példát. Az egyszerűség kedvéért a felhasználói hitelesítést szimuláljuk, és nem végezzük el az adatbázisban lévő felhasználói rekord és a beküldött jelszó tényleges ellenőrzését.

Kezdjük az útvonalakkal

Nyissa meg az application/config-ban található routes.php-t

Adja hozzá a következő útvonalakat

$route['login'] = 'sessioncontroller/login';
$route['authenticate'] = 'sessioncontroller/authenticate';
$route['settings'] = 'sessioncontroller/settings';
$route['dashboard'] = 'sessioncontroller/dashboard';
$route['logout'] = 'sessioncontroller/logout';

ITT,

  • $route['login'] = 'munkamenetvezérlő/bejelentkezés'; meghatározza a bejelentkezési űrlapot megjelenítő útvonalat
  • $route['authenticate'] = 'munkamenetvezérlő/hitelesítés'; meghatározza a sikeres felhasználói bejelentkezést szimuláló útvonalat, és beállítja a munkamenet bejelentkezési adatait.
  • $route['settings'] = 'munkamenetvezérlő/beállítások'; olyan védett oldalt határoz meg, amelyhez csak bejelentkezett felhasználók férhetnek hozzá
  • $route['dashboard'] = 'munkamenetvezérlő/műszerfal'; olyan védett oldalt határoz meg, amelyhez csak bejelentkezett felhasználók férhetnek hozzá.
  • $route['logout'] = 'munkamenetvezérlő/kijelentkezés'; kijelentkezteti a felhasználót a munkamenet adatainak megsemmisítésével

Most frissítsük a SessionControllert

Nyissa meg az application/controllers/SessionController.php-t

Adja hozzá a következő módszereket

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'));
    }

ITT,

  • public function check_auth($page) {…} meghatározza azt a módszert, amely ellenőrzi, hogy a felhasználó bejelentkezett-e, majd engedélyezi az oldal elérését. Ha egy felhasználó nincs bejelentkezve, akkor a felhasználó egy gyorsüzenettel a bejelentkezési oldalra kerül.
  • public function login() {…} betölti a sessions könyvtárban található bejelentkezési nézetet.
  • public function authenticate() {…} beállítja a munkamenet felhasználói adatait a logged_in és a username kulcsokhoz. MEGJEGYZÉS: Nem ellenőrizzük a bejelentkezési adatokat az adatbázisban. Egyszerűen feltételezzük, hogy a beküldött adatok rendben vannak, és beállítjuk a munkamenet adatait.
  • public function dashboard() {…} betölti az irányítópult oldalt a $this->check_auth('dashboard') meghívása után; amely ellenőrzi, hogy a logged_in session kulcs be van állítva.
  • public function settings() {…} betölti a szintén védett beállítási oldalt
  • public function logout() {…} megsemmisíti a munkamenet adatait, és kijelentkezteti a felhasználót. A metódus a bejelentkezési oldalra is átirányít

CodeIgniter munkamenet-megtekintések

Hozza létre a következő nézeteket az alkalmazás/nézetek/munkamenetek között

  • műszerfal.php
  • login.php
  • settings.php

Adja hozzá a következő kódot a dashboard.php fájlhoz

<!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>

ITT,

session->userdata('username');?> megjeleníti azt a felhasználónevet, amelyet a hitelesítési módszerben adtunk meg

Adja hozzá a következő kódot a login.php-hez

<!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>

ITT,

A bejelentkezési űrlap elküldésre kerül az útvonal hitelesítéséhez.

Adja hozzá a következő kódot a settings.php-hez

<!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>

A mi nézeteinkért ennyi. Most teszteljük az alkalmazásunkat.

Ebben az oktatóanyagban a beépített PHP webszervert használjuk, de bármilyen PHP-t támogató webszervert használhatunk.

Nyissa meg a terminált

Futtassa a következő parancsot

cd C:\Sites\ci-app
php -S localhost:3000

ITT,

A fenti parancs tallózással az alkalmazás kódkönyvtárába lép, és elindítja a beépített szervert a 3000-es porton.

Megjegyzés: az alkalmazás elérési útjának meg kell egyeznie a letöltési útvonallal CodeIgniter, és a számítógépén található bármelyik szabad portszámot használhatja. Nem szükséges a 3000-es portot használni.

Nyissa meg a következőt URL a webböngésződben: http://localhost:3000/dashboard

át lesz irányítva a következő oldalra

CodeIgniter munkamenet-megtekintések

Kattintson a Bejelentkezés gombra

A következő eredményeket fogja látni

CodeIgniter munkamenet-megtekintések

Miután bejelentkeztünk, most már láthatjuk a munkamenet adatait.

Összegzésként

Ebben az oktatóanyagban megtanultad az alapokat CodeIgniter munkamenet-könyvtár, és megtanultam, hogyan használható ideiglenes adatok flash üzenetekként történő tárolására, valamint állandóbb adatok, például felhasználói bejelentkezési adatok tárolására.

Foglald össze ezt a bejegyzést a következőképpen: