TCP/IP : Programmes CGI et NET.DATA

BoTTom |    Changer de couleur
 
 TCP/IP V3R20 - V3R70 reconnait la norme CGI
 
 Il s'agit de définir dans une page HTML :
 
 - des zones d'entrée
 
 - des objets graphiques : boutons radio/cases à cocher
 
 - deux boutons  a/ submit  (validation)
 
                 b/ reset   (remise à blanc)
 
 et d'associer un pgm de traitement sur le serveur.
 
 Principaux TAGs HTML :
 
<FORM ACTION="/QSYS.LIB/WWWCGI.LIB/SIGNATURCL.PGM" METHOD=POST>
 
 Définit le programme à exécuter (syntaxe IFS)
 
 


|    Changer de couleur
 
 Il existe deux méthodes de transmission des données avec CGI :
 
    GET = les valeurs sont transmises dans une variable d'environnement
 
          QUERY_STRING
 
 
    POST = les valeurs sont transmises dans le flot de données en entrée
 
          (STDIN), une variable nommée CONTENT_LENGTH donne la longueur.
 
 
 
  Vous devez autoriser l'une de ces méthodes (ou les deux) dans la
   configuration HTTP (WRKHTTPCFG) par :
 
   enable GET
 
ou
   enable POST
 


|    Changer de couleur
 
  Les variables d'enrivonnement peuvent être assignées par :
 
   ADDENVVAR ENVVAR(Essai) VALUE(valeur)
 
 
  les commandes CHGENVVAR et WRKENVVAR sont également disponibles.
 
 
 
  le serveur HTTP founit automatiquement certaines variables comme :
 
  REMOTE_ADDR : adresse IP
 
  REMOTE_HOST : nom de machine
 
  SERVER_NAME : nom du serveur
 
  QUERY_STRING: la série de paramètres si méthode = GET
 
   etc ..
 


|    Changer de couleur
 Suite du formulaire  
 
<INPUT NAME=NOM TYPE=TEXT SIZE=15 MAXLENGTH = 15>
 
 définition d'une zone de saisie, son nom, son type, sa taille maxi
 
<INPUT TYPE=SUBMIT VALUE="VALIDATION">
<INPUT TYPE=RESET VALUE="effacer">
 
Définition des deux boutons de traitement avec leur texte .
 
le programme SIGNATURCL va dons être appellé, et les paramètres transmis
 dans Le flot d'entrée (STDIN) sous la forme
 
                "chemin/nom-de-pgm?nom1=valeur1&nom2=valeur2" 
 
                nom1, nom2 sont les noms tel qu'indiqués par INPUT NAME=
 
                les valeurs sont transmises à la longueur saisie
                 et non à la longueur déclarée.
 
                la paramètre se termine par un zéro hexa, jusqu'en V4R20 .


|    Changer de couleur
 
 Votre programme doit recevoir le paramètre et générer un résultat
 
   soit sous la forme "location : http://<<--URL--->>" 
 
    ce qui redirige vers un document déja écrit
 
 
   exemple
                  location: http://129.1.1.1/html/cgi/erreur.html
 
 
 
 
   soit sous la forme "content-type : type-mime/sous-type" 
 
   ce qui permet de renvoyer du texte HTML dynamique
 
 
   exemple
                  Content-type: text/html <HTML> ....</HTML>
 


|    Changer de couleur
 
 APIs Liées :
 
 
     QtmhRdStin             Lire STDIN (le flot en entré)
 
        + char(?)           paramètre à lire
        + bin(4)            lg de la variable
        + bin(4)            lg de la valeur
        + char(?)            structure std de gestion des erreurs
 
 
 
     QtmhWrStout            écrire dans STDOUT (le flot en sortie)
 
        + char(?)           paramètre à écrire
        + bin(4)            lg de la variable
        + char(?)            structure std de gestion des erreurs
 
 
 
 


|    Changer de couleur
 
     QtmhCvtDb              découper un paramètre suivant un format BD
 
        + char(20)          <--fichier(10c)-><--bib(10c)-->
        + char(?)           paramètre lu (à découper)
        + bin(4)            lg de la variable
        + char(?)           data structure résultat
        + char(10)          nom du format BD
        + bin(4)            code retour 0 =OK, -1=Erreur de converison
        + char(?)            structure std de gestion des erreurs
 
ATTENTION les zones doivent avoir le même nom dans le formulaire et la DS.
 
     QtmhGetEnv             lire le contenu d'une variable d'environnement
 
        + char(?)           paramètre à lire
        + bin(4)            lg de la variable
        + bin(4)            lg de la valeur
        + Char(?)           nom de la variable d'environnement
        + BIN(4)            lg du nom
        + char(?)            structure std de gestion des erreurs
 


|    Changer de couleur
 Vous devez donc :
 
  1/ lire STDIN (utilisez la méthode POST)
 
  2/ découper les données transmises
 
     a/ par pgm (en scannant '?', puis les caractères "&")
     b/ par API en créant un fichier PF qui servira de modèle
 
  3/ gérer les données
 
     enregistrement ET/OU lecture base de données, ...
 
  4/ fournir une réponse (STDOUT)
 
     a/ soit en indiquant les coordonnées d'un fichier HTML
 
        (données statiques)
 
     b/ soit en fournissant par pgm le flot HTML de réponse
 
        (données dynamiques)


|    Changer de couleur
 
 Pour plus d'information sur CGI
 
  sur AS/400, voyez la documentation  SC41-3420-04
 
      "TCP/IP Configuration and reference" , chapitre 13.
 
 
  sur la norme, voyez les sites WEB suivants :
 
  - http://hoohoo.ncsa.uiuc.edu/cgi/
 
 
  et sur YAHOO la liste des sites parlant de CGI est :
 
  - http://www.yahoo.com/Computers/World_Wide_Web/...
                                           ...CGI__Common_Gateway_Interface/
 
    (sur une seule ligne bien sur)
 
 
 ou bien, utilisez Net.Data.





©AF400