Note finali

Lunedì, 17 Maggio 2004

OBIETTIVI DELLA LEZIONE
Rivedere quanto appreso nelle scorse lezioni alla luce di una applicazione WEB leggermente più complessa; inoltre approfondire alcuni dettagli utili per sviluppare gli elaborati.

Un lungo esempio

Attraverso questo lungo esempio ( essessione3.php), ripassiamo le cose imparate nelle scorse lezioni e vediamo come, mettendo insieme le cose imparate, sia possibile costruire un applicazione che, seppure didattica, sia in grado di grarantire un grado di sicurezza minimale.

Il database contiene un solo utente sassi e la password è semplicemente sassi.

Upload di immagini

Quando si fa l'upload di una immagine sul server (cioè il client invia al server una intera immagine che quest'ultimo salva sul suo file system) il modulo PHP la rende disponibile al nostro script nella variabile super globale $_FILES. Esattamente come troveremmo nell'array $_POST le variabili inviate con il metodo post.

Se il nostro controllo si chiama "miofile", $_FILES["miofile"] contiene:

Da notare:

Ecco un esempio: upload1.php (funziona solo all'interno del polo di Crema)

<html>
<head>
<title>Upload di una immagine</title>
</head>
<body>
<?php
    $remote_ip_chunk = explode(".", $_SERVER['REMOTE_ADDR']);
    $server_ip_chunk = explode(".", $_SERVER['SERVER_ADDR']);
    $remote_ip=$remote_ip_chunk[0] . $remote_ip_chunk[1];
    $server_ip=$server_ip_chunk[0] . $server_ip_chunk[1];
    if( $remote_ip !== $server_ip )
    {
        print "Questo script funziona solo all'interno del Polo di Crema!\n";
        print "</body>\n</html>\n";
        exit;
    }

?>
<?php
if( !isset($_FILES['immagine']) )
{
?>
<h3>Seleziona l'immagine da caricare sul server:</h3>
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post"
    enctype="multipart/form-data">

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="immagine">
<input type="submit" value="Invia l'immagine">
</form>
<?php
}
else
{
    if($_FILES['immagine']['error']!==UPLOAD_ERR_OK)
    {
        print "<h3>L'immagine non è stata caricata. Riprova.</h3>\n";
    }
    else
    {
        # il file va spostato da qualche parte perchè ora è in
        # una cartella temporanea
        $file_destinazione="./img/" . $_FILES['immagine']['name'];
        if( move_uploaded_file($_FILES['immagine']['tmp_name'], $file_destinazione) )
        {
            print "<h3>L'immagine è stata caricata. Eccola:</h3>\n";
            print "<img src=\"$file_destinazione\" />\n";
            print "<br /><br />\n";
            print "Dimensioni di <b>{$_FILES['immagine']['name']}</b>: " .
                "{$_FILES['immagine']['size']} bytes.\n";
        }
        else
        {
            print "<h3>L'immagine non è stata caricata. Riprova.</h3>\n";
        }
    }
}

?>
</body>
</html>

Funzioni Utili

Lab

ATTENZIONE: alla pagina Note DevC++ sono state aggiunte alcune informazioni sull'ambiente di sviluppo DevC++, utili per risolvere alcuni dei problemi avuti durante le esercitazioni.

Esercizio 1, FACOLTATIVO
Dato il database dell'esercizio 2 della scorsa lezione, preparare lo script sommaspese.php che chieda all'utente due date e calcoli in uscita la somma del campo "importo" per le spese effettuate nell'intervallo specificato.
Esercizio 2, FACOLTATIVO
Scrivere un programma C che chieda all'utente di immettere una stringa formata solo dai caratteri '#', 'o' e ' ' (lunghezza massima 40). Dopo aver verificato che i caratteri forniti siano corretti (non ci siano altri caratteri), contare quale è la sequenza consecutiva di caratteri identici più lunga per ciascun tipo di carattere (es '####' 4 caratteri '#' consecutivi, ...)
Esercizio 3, FACOLTATIVO
Partendo dal codice scritto per l'esercizio precedente, modificare il file scacchiera.c in modo da visualizzare, ad ogni ciclo, il numero massimo di caratteri consecutivi identici sulla stessa riga.




Informazioni sul sito