(...)

// Nom du fichier à récupérer + paramètres GET
char url  [50];

// Paramètres POST
char post [50];

(...)

void loop ()
{
    EthernetClient client;
    File descfic;
    char valnom [21], valclasse [21];


    // Regarde si un client est connecté et attend une réponse
    client = serveur.available ();

    // si c'est le cas, quelqu'un est connecté
    if (client)
    {
        // récupérer ce qu'il a envoyé
        lire_trame_client (client, url, sizeof (url), post, sizeof (post));

        // si aucun nom de fichier ne figure dans l'url
        if (! url [1])
            // mettre le nom du fichier d'accueil
            strcpy (url, "get.htm");

        // tenter d'accéder à au fichier HTML
        descfic = SD.open (url, FILE_READ);

        // si on n'a pas réussi, tenter la page d'erreur
        if (! descfic)
            descfic = SD.open (F("/err404.htm"), FILE_READ);

        // envoi de l'entête de la page web
        envoie_entete_reponse (client, url);

        // si on accède au fichier html
        if (descfic)
        {
            // si page de réponse à un formulaire
            if (memcmp (url, "rep", 3) == 0)
            {
                // si réponse à un formulaire par la méthode get
                if (memcmp (url,"repget", 6) == 0)
                {
                    // récupérer les valeurs des variables
                    lecvar_get ("nom", url, valnom);
                    lecvar_get ("classe", url, valclasse);
                }
                // sinon méthode post
                else
                {
                    // récupérer les valeurs des variables
                    lecvar_post ("nom", post, valnom);
                    lecvar_post ("classe", post, valclasse);
                }

                // si nom inconnu
                if (! *valnom)
                    // l'initialiser
                    strcpy (valnom, "inconnu");

                // copier la page HTML jusqu'à l'affichage du nom
                coprep_chaine (descfic, client, "XXXNOM", valnom);

                // si classe inconnue
                if (! *valclasse)
                    // sauter l'indication de la classe
                    sauter_jusque_chaine (descfic, "XXXCLASSE");
                // sinon
                else
                    // copier avec le nom de la classe
                    coprep_chaine (descfic, client, "XXXCLASSE", valclasse);
            }

            // envoi de la page ou de la fin de page
            copie_jusque_fin (descfic, client);

            // ferner le fichier HTML
            descfic.close ();
        }
        // sinon message d'erreur
        else
            client.println (F("Probleme probable d'acces a la carte SD"));

        Serial.println (F("Page envoyée\n"));

        // Donne le temps au client de prendre les données
        delay (10);

        // Ferme la connexion avec le client
        client.stop ();
    }
}