home *** CD-ROM | disk | FTP | other *** search
- /*------------------------------------------------
- //
- // Module: main.c
- //
- // Objet : source principale de la dmo mthodes GET et POST
- // elle donne une ide sur la rcuperation de toute sorte
- // de paramtres issus d'un client.
- //
- // ToDo :
- //
- //
- //
- // Maintenance :
- //
- // Auteur : Olivier Booklage
- // Version : V1.0
- // Date : 07/07/1997
- // Remarq. :
- //
- //
- //
- //-----------------------------------------------*/
-
-
- /* --- Includes externes -- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "util.h"
-
-
- /* --- Includes internes -- */
- /* --- Constantes globales internes --- */
-
- /* Longueur maximale de la valeur d'un champ */
- /* Utile uniquement pour la methode GET */
- #define MAXGETVAL 1024
-
- /* Longueur maximale du nom d'un champ */
- /* Utile uniquement pour la methode GET */
- #define MAXGETNAME 256
-
- /* Nombre maximal de champs de saisie */
- #define MAXENTRIES 1000
-
- /* --- Structures globales internes --- */
-
- /* Structure pour les couples (nom du champ, valeur) */
- typedef struct {
- char *name;
- char *val;
- } entry;
-
- /* --- Variables globales internes --- */
-
- entry entries[MAXENTRIES];
-
- /* --- Prototypage interne --- */
-
- int main(void);
-
- /* --- Fonctions --- */
-
- int main(void)
- {
- int i, items, cl;
- char *qs, *ql, *s, *name, *passwd;
- char *methode;
-
- /* Tester l'environnement */
-
- if ( (methode = getenv("REQUEST_METHOD")) == NULL )
- {
- fputs("\aPas d'environnement 'REQUEST_METHOD'\n",stderr);
- return(0);
- }
-
- /* Creation de l'entete */
-
- printf("Content-type: text/html\n\n");
-
- /* Creation du corps */
-
- printf("<HTML>\n");
- printf("<HEADER>\n");
- printf("<TITLE>Et voici les données recueillies</TITLE>\n");
- printf("</HEADER>\n");
- printf("<BODY>\n");
- printf("<H1>Les données recueillies:</H1>\n");
-
- /* Lecture et decodage des donnees */
- /* A l'issue du decodage, les couples (nom du champ, valeur) */
- /* se trouvent dans le tableau de structures entry entries */
- /* L'index du dernier element du tableau est l'entier items */
-
-
- if (!strcmp(methode,"GET"))
- {
- /* Methode GET -- Lecture de la variable QUERY_STRING */
-
- s = getenv("QUERY_STRING");
- if ( s == NULL )
- {
- fprintf(stderr,"passutil:QUERY_STRING NULL!\n");
- return(0);
- }
-
- qs = (char*)malloc(strlen(s)+1);
-
- (void)strcpy(qs,s);
-
- for(i=0;qs[0] != '\0';i++)
- {
- items=i;
-
- /* dimensionnement de la valeur du champ */
- entries[i].val=(char*)malloc(MAXGETVAL);
-
- /* lecture d'un couple (nom du camp, valeur)*/
- getword(entries[i].val,qs,'&');
-
- /* conversion des plus en espaces */
- plustospace(entries[i].val);
-
- /* conversion des codes hexxadecimaux par les */
- /* caracteres correspondants */
- unescape_url(entries[i].val);
-
- /* dimensionnement du nom du champ */
- entries[i].name=(char*)malloc(MAXGETNAME);
-
- /* decoupage du couple (nom du champ, valeur) */
- getword(entries[i].name,entries[i].val,'=');
- }
- }
- else if (!strcmp(methode,"POST"))
- {
- /* Methode POST -- Lecture sur l'entree standard */
-
- ql = getenv("CONTENT_LENGTH");
-
- if ( ql == NULL )
- {
- fprintf(stderr,"passutil:CONTENT_LENGTH NULL!\n");
- return(0);
- }
-
- cl = atoi(ql);
- if ( cl == 0 )
- {
- fprintf(stderr,"passutil:CONTENT_LENGTH = 0!\n");
- return(0);
- }
-
- for(i=0;cl && (!feof(stdin));i++)
- {
- items=i;
- /* lecture d'un couple (nom du champ, valeur) */
- /* sur l'entrée standard */
-
- entries[i].val = fmakeword(stdin,'&',&cl);
-
- plustospace(entries[i].val);
- unescape_url(entries[i].val);
-
- /* decoupage du couple (nom du champ, valeur) */
- entries[i].name = makeword(entries[i].val,'=');
- }
- }
-
- /* Lecture de la valeur des champs le tableau entries */
-
- for (i=0; i<=items; i++)
- {
-
- /* champ PASSWORD */
- if (!strcmp(entries[i].name, "pwd")) passwd = entries[i].val;
-
- /* champ NAME */
- if (!strcmp(entries[i].name, "nom")) name= entries[i].val;
- }
-
- /* Affichage des donnees */
- printf("<B>Nom:</B> %s <BR><B>Mot de passe:</B> %s\n", name, passwd);
- printf("</BODY>\n");
- printf("</HTML>\n");
-
- return(0);
- }
-
- /* --- EOF --- */
-