Salve. Clicca sui link per selezionare l'esempio che preferisci
Slide 2010-2013
Cap1
Cap2

Attacco alla APPLE
SQL iniection

ESERCIZI PHP

  1. FRASE:
    Realizzare il codice php che visualizzi una frase a scelta con tutti i tipi di Heading disponibile (H1 - H6) applicando agli heading pari il l'attributo bold ed a quelli dispari l'attributo underline. w3schools
  2. RIGHE:
    Realizzare il codice php che visualizzi un contatore da 10 a 1, dovrà essere visualizzata la stringa "il numero attuale è : n" i numeri pari useranno uno style "pari" e gli dispari utilizzino lo style "dispari", la frase "il numero attuale è : " userà rispettivamente lo stile "frasepari" e "frasedispari". Gli stili non dovranno essere inline, dovranno modificare almeno tre attributi del testo e dovranno avere attributi distinti (es: scritta verde bold numero rosso sottolineato). Comodo in questi casi l'uso dell'operatore ternario: ... class=" "...
  3. FUNZIONE:
    Realizzare una funzione php che, dato come parametro un numero intero n>0, ritorni una stringa di caratteri casuali di lunghezza n. Realizzare una pagina php per testare la funzione creata che dia in output la stringa casuale.
  4. ATLETI:
    Realizzare una pagina che permetta l'inserimento dei dati presenti nella scheda atleta rispettandone il layout con l'utilizzo dei css, i dati dovranno essere salvati in un file il cui nome sarà il codice fiscale inserito, realizzare anche la pagina di consultazione della scheda, sempre rispettandone il layout, alla pagina di consultazione si arriverà attraverso un modulo che permetta l'inserimento del codice fiscale che si vuole consultare. Aggiungere il codice javascript necessario a verificare che i campi obbligatori siano stati compilati correttamente, considerare campi obbligatori quelli presenti nelle prime quattro righe e quelli delle ultime tre.
  5. IMPORTI:
    Creare un form html che consenta l'immissione dei seguenti valori: Nominativo Provincia Importo I primi 2 campi devono essere immessi obbligatoriamente. Il campo importo, se omesso, dovrà essere impostato a 0. Alla pressione del tasto SALVA, dopo i controlli richiesti, richiamare uno script php per salvare i dati immessi in un file di testo CREDITI.TXT. Lo script dovrà comunicare l'avvenuto salvataggio e proporre un link per ritornare all'inserimento di nuovi dati ed un altro link per il richiamo di un altro script che consenta la visualizzazione di un record per riga, dei dati inseriti (per record si intendano i 3 campi immessi tramite form). Alla fine dell'elenco dovrà essere riportato il totale degli importi.
  6. ROTTURA DI CODICE:
     Sia dato un file di testo CREDITI.TXT con il seguente tracciato logico:
    
        Nominativo
        Provincia
        Importo
    
    Le informazioni sono memorizzate una per riga, pertanto 3 righe compongono un record logico.
    I dati sono ordinati per provincia come riportato di seguito.
    
    Rossi CL 1000
    Bianchi CL 256
    Verdi CT 100
    Black CT 990
    White CT 870
    Neri EN 450
    Green EN 200
    Gray EN 125
    ...
    
    Memorizzare in un file TOTALI.TXT e visualizzare un elenco con gli importi totalizzati come indicato di seguito.
    
    CL 1256
    CT 1960
    EN 325
    ...
    
  7. GESTIONE: 
    Realizzare il database e un mini sito web che permettano: 1) L'inserimento dell'anagrafica della classe con i seguenti campi: Nome Cognome CF Età (in anni) E la relativa interfaccia di interrogazione che permetta: A partire dal codice Fiscale visualizzare i dati di uno studente A partire da una età visualizzare gli utenti con quella età La media delle età di tutti gli studenti e la lista di tutti gli studenti e di quanti mesi sono distanti dall'età media. Consegnare: il dump (backup) del database un file compresso (.zip) che contenga il sito
  8. GRAFI:
    Dato un database Dijkstra 
    
    contenente le seguenti
    tabelle ...con innodb (...engine=innodb)
    
        graphs(id, graph_name)
        nodes(id,node_name,graph)
        edges(node_out,node_in,weight,graph)
    
    Nella tabella graph creare un unico record "1,geo". Per il momento tutte le registrazioni in nodes e edges saranno riferite a detto record. 
    Impostare integrità referenziale tra le tabelle in modo da non consentire l'input di record non collegati ad alcun grafo. (...on delete cascade on update cascade)
    
    Creare una interfaccia html ed un
    modulo php che permettano l'inserimento di più record nella tabella
    nodes immettendo da tastiera una stringa contenente una lista di nomi
    separati da una ",".
    
    Ogni nome di nodo dovrà essere archiviato in un record diverso.
    
    Esempio:
    
    da una  stringa "CT,ME,PA,EN,..." saranno generati i seguenti record:
    
    1,CT,1
    
    2,ME,1
    
    3,PA,1
    
    4,EN,1
    
  9. Creare una pagina html che consenta l'autenticazione immettendo utente e password. Lo script php ricevente, dopo avere verificato la correttezza dei dati immessi, dovrà memorizzare l'utente in una variabile di sessione. A questo scopo, nel db GRAPHS, esisterà la seguente tabella: users(user, password) Ogni tentativo di accesso dovrà essere registrato in un file LOG che dovrà memorizzare: utente esito ("OK"/"ERRORE") data ora Se l'accesso avrà esito positivo visualizzare una pagina con messaggio adeguato, altrimenti riproporre la pagina di autenticazione.
  10. ESEMPIO DATE:
    Esempio d'uso di funzioni time e date per ottenere la data di sistema e per formattarla sotto forma testuale $t=time(); $d=date("d/m/y H:i:s",$t); echo time()."\n"; echo $d."\n"; //1364297105 26/03/13 12:25:05 $d=date("H:i:s",$t); echo time()."\n"; echo $d // 1364297105 12:25:05
  11. ARCHIVIARE IMMAGINI:
    Conservare le immagini in una tabella é possibile almeno in 2 modi:
    *Creare un campo di tipo BLOB che consente la memorizzazioni di grandi quantità di informazioni binarie (non testo) e in esso salvare l'immagine;
    *Creare un campo di tipo char o varchar e cinservare in esso il nome del file immagine completo di percorso (p.e. ../images/moto.jpg)
    
    CODICE DI ESEMPIO
    MySQL:
    CREATE TABLE IF NOT EXISTS `photos` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `titolo` varchar(40) DEFAULT NULL,
    `photo_small` varchar(40) NOT NULL,
    `photo_large` varchar(40) NOT NULL,
    `descrizione` text NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    
    --
    -- Dump dei dati per la tabella `photos`
    --
    
    INSERT INTO `photos` (`id`, `titolo`, `photo_small`, `photo_large`, `descrizione`) VALUES
    (1, 'Motobecane', '../images/motobecane_s.jpg', '../images/motobecane_l.jpg', 'Fantastica moto anni 2000.\r\nPer veri intenditori della tecnologia ed amatori delle motociclette più moderne.'),
    (2, 'Minichic', '../images/minichic_s.jpg', '../images/minichic_l.jpg', 'Per l''uomo che non deve chiedere MAI!\r\nMoto di gran classe per tutti gli usi:\r\nPartabile, lusso, turismo, GT, sport.');
    
    PHP:
    <?
    error_reporting(0);
    include "connect.php";
    ?>
    <table border="1">
    <?
    $con=mysql_connect($host, $user, $password) or die ("Errore ");
    mysql_select_db("test", $con) or die ("Errore di connessione al DB");
    $sql="select * from photos;";
    $rs=mysql_query($sql, $con);
    while ($riga=mysql_fetch_array($rs)) {
    echo "<tr>\n";
    echo "<td> ".$riga["id"]."";
    echo "<td> ".$riga["descrizione"]."";
    echo "<td>  immagine catalogo ";
    echo "</tr>";
    }
    
    ?>
    </table>
    </body>