(...)
// 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 ();
}
}