Home | Search | Help  
Home Page Università di Genova

Esercitazione 5

Creazione di un'area intranet

Riprendete la tabella degli utenti dell'esercitazione 4 che questa volta diventano i dipendenti dell'azienda ACME.

ACME ha prediposto un'area intranet per lo svolgimento di molte operazioni interne. L'accesso all'area intranet è subordinato ad una fase di autenticazione che avviene in più passi.
  1. Ogni dipendente deve prima selezionare la propria area di appartenenza scegliendola da un menu a tendina simile a quello in figura (non preoccupatevi di riprodurre lo stesso codice HTML).

  2. A questo punto deve essere presentato un secondo menu che contiene i nominativi dei dipendenti dell'area selezionata.

  3. Selezionato il proprio nome, ogni dipendente deve inserire la propria password. Se l'autenticazione va a buon fine, verrà presentato un menu dei possibili servizi on line.
    Nota: naturalmente, se l'autenticazione va a buon fine si deve attivare il meccanismo delle variabili di sessione.
Esercizi
  1. Usando phpMyAdmin create e popolate la tabella delle aree dell'azienda ACME, che dovrà contenere almeno i due attributi idarea e nomearea. Modificate la tabella degli utenti aggiungendo l'attributo idarea (chiave esterna - anche se non supportata direttamente in questa versione di MySQL) che, per ogni dipendente, tiene traccia della sua area di appartenenza.

  2. Interrogate il database per generare dinamicamente il menu a tendina che contiene i nomi delle varie aree (vedi figura).

    Nota: le aree sono una informazione che non varia nel tempo e quindi - almeno in questo caso - si potrebbe pensare di fare un file HTML statico, ma per esercizio è meglio farlo comunque dinamico .

    Ecco un frammento di pseduo-codice PHP che permette di generare un menu a tendina.
    <?
    //preparo la query di selezione
    $query = "select attr1, attr2 ......";
    
    //eseguo l'interrogazione
    $res = mysql_query($query);
    
    //conto i record
    $num_res = mysql_num_rows($res);
    
    if ($num_res != 0) {
    
       //formatto il risultato per il client
       while ($row = mysql_fetch_array($res))
          echo "<option value='" . $row["attr1"] . "'>  . $row["attr2"] . "<option>\n";
    
      echo "<select>\n";
    }
    
    else 
    { .... }
    ?>
    
  3. Quando l'utente preme il tasto Continua nel menu generato al passo precedente si deve estrarre dal database l'elenco di tutti i dipendenti che lavorano nell'area selezionata (vedi figura).

    Qui si dovrà creare una query che usa l'informazione relativa all'area selezionata ed estrarre tutti i dipendenti che vi lavorano. Naturalmente questa è una informazione che varia nel tempo e quindi è opportuno generare il menu in modo dinamico.

    Nota: il valore inviato al server che viene usato per la creazione della query è quello associato all'attributo value nel menu a tendina generato al passo precedente. Si tratta di un valore che è stato appena estratto dal database e quindi dovrebbe esistere nel database. Tuttavia, potrebbero non esserci dipendenti che appartengono ad una determinata area oppure il valore potrebbe essere stato manipolato dal lato client. Quindi, anche se sembra apparentemente inutile, qualche controllo va fatto per evitare di restituire all'utente errori generati dal server MySQL. È sufficiente controllare che la vista risultato dell'interrogazione non sia vuota (vedi pseduo-codice precedente).

  4. A questo punto si deve procedere alla fase di autenticazione mediante login e password e, se tutto va a buon fine, si deve presentare l'elenco dei servizi disponibili. Nel vostro caso, l'unico servizio sarà quello che permette la modifica del profilo personale, andando a riprendere (ed eventualmente modificare) il file modprofilo.php dell'Esercitazione 4.

  5. Per i più "coraggiosi". Quando create i menu a tendina provate anche a pensare e a creare dei file di testo che contengono le stesse informazioni, salvati sul server in formato XML.


vai alla lezione precedente
torna alla prima pagina del corso
vai alla prossima lezione