sql >> Database >  >> RDS >> Mysql

Wat is de beste werkwijze om specifieke pagina's te beperken tot alleen ingelogde gebruikers in Codeigniter?

Je slaat de spijker op zijn kop, maar er is een iets efficiëntere manier om het te doen.

Breid de basiscontrollers uit, in één richting (ik geloof dat oorspronkelijk geschetst door Phil Sturgeon) maar ik zal het hier samenvatten:

Zie dit artikel voor een zeer diepgaande beschrijving.

maar in wezen:

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

dus als je nu de toegang wilt beperken, gewoon:

class Secret_page extends MY_Controller {

 // your logged in specific controller code
}

en de uitgebreide controller controleert automatisch of de gebruiker is ingelogd in de constructor.

wat betreft hoe, ik zou waarschijnlijk de user_id instellen als de waarde om te controleren of deze is ingesteld, of misschien een gebruikers "groep" - dan kunt u gebruikersrechten en verschillende toegangsniveaus in uw systeem krijgen.

hoop dat dit een beetje helpt.

bewerken

Voeg dit toe aan 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 );
    }
}

Aangezien u CI 2.0 gebruikt, moet u de MY_Controllers in Application/CORE plaatsen in plaats van in bibliotheken.

Mijn applicatie/kern lijkt een beetje op:

Admin_Controller.php
MY_Controller.php
Public_Controller.php


  1. Onbewerkte query uitvoeren op MySQL Loopback Connector

  2. Hoe SQLite Upper() werkt

  3. Variabele gebruiken in een LIMIT-clausule in MySQL

  4. Сeen virtuele machine maken met Oracle VM Virtual Box