Scomporre i macroprogetti con Codeigniter in situazioni essenziali semplificate: un esempio pratico

Albin Planinc GM geniale!

Lavorando sul progetto http://umbriawayformazione.altervista.org/ci_project_competenze/ per migliorare la tecnica rispetto al primo progetto forgiato in http://umbriawayformazione.altervista.org/ spesso mi è capitato in questo mese scarso di pratica di imbattermi in problemi base da risolvere, almeno quelli essenziali per il neofita. I progetti crescono velocemente e implementare anche una cosa semplice come un form di login che attiva una sessione e protegge i dati e consente l’accesso in un’ area riservata quando si ha già parecchio codice sottomano non é sempre conveniente, se qualcosa non funziona si corre il rischio di alterare anche l’esatto funzionamento precedente. In gruppi enterprise esistono software di controllo con GIT che consentono di lavorare in sicurezza ma trovandomi in modalità didattica non ho nessuna necessità al momento di complicare ulteriormente le cose aggiungendo altra carne al fuoco. Quindi che fare? Basta simulare il funzionamento di una situazione base o atomica alla REACT, una tecnologia basata su js lato frontend che cerca di rendere il codice base riutilizzabile e che scompone zone complesse in zone accessibili. Qui facciamo lo stesso. Andiamo sul sito ufficiale di Codeigniter https://codeigniter.com/ e scarichiamo la versione tre del software e lavoriamo in locale con XAMPP https://www.apachefriends.org/it/index.html . Poi seguiamo passo passo il tutorial presente su https://www.javatpoint.com/codeigniter-login-form cercando però di personalizzare con la grafica e le funzionalità qualcosa che abbia un senso, per esempio una domanda che si trova in home che ha una soluzione solo dopo che si é fatto il LOGIN. Ciak si gira, andiamo su http://localhost/nomeprogettologinsimple/ . Quale é la prima cosa da fare? Mettere una stringa nel file config, per delucidazioni consultare articolo https://umbriawayvalorizza.wordpress.com/2020/11/14/come-risolvere-il-settaggio-configbase_url-nel-file-config-php-con-codeigniter-framework-mosse-tattiche-per-far-funzionare-il-tutto/ , ovviamente questo implica come dice l’articolo anche il riempimento degli helper e anche delle librerie rispettivamente con gli URL e le SESSION, cose che diamo per scontato in questo articolo ma che comunque consentono l’esatto svolgimento dell’ esercizio. Alla fine di queste situazioni ci ritroviamo nel file config:

$config['base_url'] = 'path';

dove path é qualcosa del tipo nometuodominioseguitodanomecartella diverso caso per caso e nell’ autoload:

$autoload['libraries'] = array('session');
$autoload['helper'] = array('form', 'url');

Fatto ciò si crea un controller di nome Login.php nel posto che sappiamo ossia dcentro la cartella controller, sappiamo che da qui partono tutti gli smistamenti e le mediazioni tra MODEL e VIEW:

 <?php  
    defined('BASEPATH') OR exit('No direct script access allowed');  
      
    class Login extends CI_Controller {  
          
        public function index()  
        {  
            $this->load->view('login_view');  
        }  
        public function process()  
        {  
            $user = $this->input->post('user');  
            $pass = $this->input->post('pass');  
            if ($user=='planinc' && $pass=='123')   
            {  
                //declaring session  
                $this->session->set_userdata(array('user'=>$user));  
                $this->load->view('welcome_view');  
            }  
            else{  
                $data['error'] = 'Your Account is Invalid';  
                $this->load->view('login_view', $data);  
            }  
        }  
        public function logout()  
        {  
            //removing session  
            $this->session->unset_userdata('user');  
            redirect("Login");  
        }  
      
    }  
    ?>  

In questo caso abbiamo un grande vantaggio, non dovendo interagire con nessun database possiamo interagire solo con la vista, ovviamente ci sarà una pagina frontale con la domanda pubblica e una pagina back che avrà una risposta riservata disponibile solo dopo accesso. Da notare che tutto il microprogetto si basa sulle informazioni di accesso planinc e 123 come indicato dall’ istruzione che lega due condizioni con && mostrandole coincidenti con i valori citati:

    if ($user=='planinc' && $pass=='123')  

Ora creiamo la vista frontale con il form come proposto dal sito https://www.javatpoint.com/codeigniter-login-form:

 <!DOCTYPE html>  
    <html>  
    <head>  
        <title>Login Page</title>  
    </head>  
    <body>  
        <?php echo isset($error) ? $error : ''; ?>  
        <form method="post" action="<?php echo site_url('Login/process'); ?>">  
            <table cellpadding="2" cellspacing="2">  
                <tr>  
                    <td><th>Username:</th></td>  
                    <td><input type="text" name="user"></td>  
                </tr>  
                <tr>  
                    <td><th>Password:</th></td>  
                    <td><input type="password" name="pass"></td>  
                </tr>  
      
                <tr>  
                    <td> </td>  
                    <td><input type="submit" value="Login"></td>  
                </tr>  
            </table>  
        </form>  
    </body>  
    </html>  

e il file di atterraggio welcome_view.php:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    Welcome <?php echo $this->session->userdata('user'); ?>
<br>
    <?php echo anchor('Login/logout', 'Logout'); ?>

      <div class="row">  <img src="http://localhost/ci_login_simple/images/1.png"></div>
</body>
</html>

Prima di andare a vedere che cosa é successo modifichiamo in router.php il punto di ingresso dell’ applicazione sostituendo il welcome con il nuovo controller login

$route[‘default_controller’] = ‘login’;

poi andiamo a vedere che cosa é successo all’ indirizzo localhost/nomeprogetto/Login Una volta verificato che sbagliando i dati compare Your Account is Invalid e che entrati correttamente compare sia il logout per distruggere la sessione sia il messaggio di benvenuto all’ utente, in questo caso allo scomparso ma fortissimo e geniale scacchista https://en.wikipedia.org/wiki/Albin_Planinc passato alla storia per aver giocato mosse fantastiche, non ci resta che passare dal MINIMALISMO VETTORIALE ULTRASEMPLIFICATO a UNA APPLICAZIONE COMPIUTA, come fare? Usando un minimo di creatività per esempio, usando css e framework da designer con bootstrap! Quindi al lavoro! Alla fine un meccanismo grezzo ma un pochino più funzionale lo si può testare qui: https://www.farwebdesign.com/ci_login_simple/index.php/Login …tutto ciò aiuta poi a creare macroprogetti più complessi come quello menzionato all’ inizio http://umbriawayformazione.altervista.org/ci_project_competenze/ e questo post non poteva finire ammirando la soluzione che é la bellissima mossa Regina muove su casa c7 che consente di dare matto con soli due pezzi minori!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo:
close-alt close collapse comment ellipsis expand gallery heart lock menu next pinned previous reply search share star