sql >> Databáze >  >> RDS >> Mysql

Jaký je nejlepší postup pro omezení konkrétních stránek na přihlášené uživatele pouze v Codeigniter?

Trefili jste hřebíček na hlavičku, ale existuje o něco efektivnější způsob, jak to udělat.

Rozšiřte základní ovladače jedním způsobem (věřím, že to původně načrtl Phil Sturgeon), ale shrnu to zde:

Viz tento článek pro velmi obsáhlý zápis.

ale v podstatě:

<?php
class MY_Controller extends Controller
{
    function __construct()
    {
        parent::Controller();
        if (! $this->session->userdata('first_name'))
        {
            redirect('login'); // the user is not logged in, redirect them!
        }
    }
}

takže nyní, pokud chcete omezit přístup, jednoduše:

class Secret_page extends MY_Controller {

 // your logged in specific controller code
}

a rozšířený ovladač automaticky zkontroluje, zda je uživatel přihlášen v konstruktoru.

Pokud jde o způsob, pravděpodobně bych jako hodnotu nastavil user_id, abych zkontroloval, zda je nastaven, nebo možná uživatelská "skupina" - pak můžete získat uživatelská oprávnění a různé úrovně přístupu ve vašem systému.

doufám, že to trochu pomůže.

upravit

Přidejte to do application/config.php

/*
| -------------------------------------------------------------------
|  Native Auto-load
| -------------------------------------------------------------------
| 
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
| for base controllers and some third-party libraries.
|
*/
function __autoload($class)
{
    if(strpos($class, 'CI_') !== 0)
    {
        @include_once( APPPATH . 'core/'. $class . EXT );
    }
}

Protože používáte CI 2.0, budete muset umístit MY_Controllers do Application/CORE spíše než do knihoven.

Moje aplikace/jádro vypadá trochu jako:

Admin_Controller.php
MY_Controller.php
Public_Controller.php


  1. Naučte se používat příkaz CASE v SQL

  2. Začínáme s SQL na Oracle Application Express

  3. Jak povolit výstup RPC pomocí T-SQL

  4. MySQL PHP srovnání PSČ konkrétně vzdálenosti