version 2004 (Modifiée)
La Méthode base Sur connexion Web peut être appelée dans trois cas distincts :
le serveur Web reçoit une requête débutant par l'URL 4DCGI.
le serveur Web reçoit une requête invalide.
elle est également appelée par 4D (mode local) et 4D Server chaque fois qu'un navigateur Web se connecte à la base en mode contextuel ou qu'une requête nécessite la création d'un contexte (ce cas n'est pas géré par 4D en mode distant qui ne prend pas en charge le mode contextuel).
Pour plus d'informations, reportez-vous ci-dessous au paragraphe "Appels de la Méthode base Sur connexion Web".
La requête doit auparavant avoir été "acceptée" par la Méthode base Sur authentification Web (si elle existe), et la base doit être publiée en tant que serveur Web.
La Méthode base Sur connexion Web reçoit six paramètres de type Texte, passés par 4D ($1, $2, $3, $4, $5 et $6). Voici leur description :
Paramètres | Type | Description |
$1 | Texte | URL |
$2 | Texte | En-tête + corps HTTP |
$3 | Texte | Adresse IP du navigateur |
$4 | Texte | Adresse IP appelée du serveur |
$5 | Texte | Nom d'utilisateur |
$6 | Texte | Mot de passe |
Vous devez déclarer ces six paramètres de la manière suivante :
` Méthode base Sur connexion Web C_TEXTE($1;$2;$3;$4;$5;$6) ` Code pour la méthode
Données supplémentaires de l'URL
Le premier paramètre ($1) est l'URL saisi par l'utilisateur dans la zone 'Adresse' de son navigateur Web, moins l'adresse hôte.
Prenons l'exemple d'une connexion Intranet. Supposons que l'adresse IP de votre machine serveur Web 4D est 123.4.567.89. Le tableau suivant liste les valeurs de $1 selon l'URL saisi dans le navigateur Web :
URL saisi dans le navigateur | Valeur du paramètre $1 |
123.4.567.89 | / |
http://123.4.567.89 | / |
123.4.567.89/Clients | /Clients |
http://123.4.567.89/Clients | /Clients |
http://123.4.567.89/Clients/Ajouter | /Clients/Ajouter |
123.4.567.89/Faire_ceci/Si_OK/Faire_cela | /Faire_ceci/Si_OK/Faire_cela |
Notez que vous êtes libre d'utiliser ce paramètre à votre convenance. 4D ignore simplement les valeurs passées au-delà de la partie hôte de l'URL. Par exemple, vous pouvez établir une convention dans laquelle la valeur "/Clients/Ajouter" signifie "aller directement à l'ajout d'un nouvel enregistrement dans la table [Clients]." En fournissant aux utilisateurs Web de votre base une liste des valeurs possibles et/ou des marqueurs par défaut, vous pouvez proposer des raccourcis vers différentes parties de votre application. Ainsi, les utilisateurs Web peuvent accéder rapidement aux ressources de votre site Web sans devoir naviguer dans toute la base à chaque connexion.
ATTENTION : Pour empêcher un utilisateur d'accéder directement à une base à l'aide d'un marqueur créé pendant une session précédente, 4D intercepte tout URL correspondant à un des URLs standard de 4D.
En-tête et corps de la requête HTTP
Le deuxième paramètre ($2) est l'en-tête suivi du corps de la requête HTTP envoyée par le navigateur Web. Notez que ces informations sont passées telles quelles à votre Méthode base Sur connexion Web. Le contenu varie en fonction du type de navigateur Web qui tente de se connecter.
Avec Netscape 4.5 sous Mac OS, vous recevrez un en-tête semblable à celui-ci :
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.5 (Macintosh; I; PPC)
Host: 123.45.67.89
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: fr
Accept-Charset: iso-8
Avec Microsoft Internet Explorer 6 sous Windows, vous recevrez un en-tête semblable à celui-ci :
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 123.45.67.89
Accept: image/gif, image/x-xbitmap, image/pjpeg, */*
Accept-Language: fr
Si votre application exploite ces informations, il est de votre ressort d'analyser l'en-tête et le corps.
Adresse IP du navigateur
Le troisième paramètre ($3) reçoit l'adresse IP de la machine du navigateur. Cette information peut vous permettre, en particulier, de distinguer les connexions Intranet des connexions Internet.
Adresse IP demandée du serveur
Le quatrième paramètre ($4) reçoit l'adresse IP demandée du serveur Web 4D. En effet, 4D autorise le multi-homing, permettant d'exploiter des machines disposant de plusieurs adresses IP. Pour plus d'informations sur ce point, reportez-vous à la section Paramétrages du serveur Web.
Nom d'utilisateur et Mot de passe
Les paramètres $5 et $6 reçoivent le nom d'utilisateur et le mot de passe saisis par l'utilisateur dans la boîte de dialogue standard d'identification affichée par le navigateur, le cas échéant.
Cette boîte de dialogue apparaît pour chaque connexion dès que l'option Utiliser les mots de passe est cochée dans les Préférences (cf. section Sécurité des connexions).
Note : Si le nom d'utilisateur envoyé par le navigateur existe dans 4D, pour des raisons de confidentialité le paramètre $6 n'est alors pas rempli (il reçoit une chaîne vide).
Appels de la Méthode base Sur connexion Web
La Méthode base Sur connexion Web peut être utilisée comme point d'entrée dans le serveur Web 4D, soit à l'aide de l'URL spécial 4DCGI, soit à l'aide d'URLs de commande personnalisés. Elle joue aussi le rôle de point d'entrée en mode contextuel (avec 4D en mode local et 4D Server).
Attention : L'appel d'une commande 4D affichant un élément d'interface (ALERTE, DIALOGUE...) entraîne l'arrêt du traitement de la méthode.
La Méthode base Sur connexion Web est donc appelée dans les cas suivants :
lors de la connexion d'un navigateur à un serveur Web 4D fonctionnant en mode contextuel. La méthode base est appelée avec l'URL /<action>...
lorsque 4D reçoit l'URL /4DMETHOD. Le serveur Web passe en mode contextuel et la méthode base est appelée avec l'URL /4DMETHOD/NomMéthode dans $1.
lorsque 4D reçoit l'URL /4DCGI. La méthode base est appelée avec l'URL /4DCGI/<action> dans $1.
lorsqu'une page Web appelée avec un URL du type <chemin>/<fichier> n'est pas trouvée. La méthode base est appelée avec l'URL (*).
lorsqu'une page Web est appelée avec un URL du type <chemin>/ et qu'aucune page d'accueil par défaut n'est définie. La méthode base est appelée avec l'URL (*).
(*) Dans ces cas particuliers, l'URL reçu dans $1 ne débute pas par le caractère "/".
Pour connaître l'origine de l'appel de la Méthode base Sur connexion Web et adapter le traitement à effectuer, vous devez utiliser la fonction Contexte Web, qui retourne Vrai si elle est appelée depuis le mode contextuel, et Faux sinon.
Par conséquent, lorsque votre serveur Web manipule le mode contextuel et le mode sans contexte, nous vous conseillons de structurer la Méthode base Sur connexion Web de la manière suivante :
`Méthode base Sur connexion Web C_TEXTE($1;$2;$3;$4;$5;$6) Si (Contexte Web) `Si l'on est en mode contextuel AvecContexte ($1;$2;$3;$4;$5;$6) `La méthode AvecContexte contient tout ce qu'il y avait dans la `méthode base Sur connexion Web en 4D 6.0.x Sinon SansContexte ($1;$2;$3;$4;$5;$6) `La méthode SansContexte effectue les traitements des requêtes `non contextuelles (généralement courts) Fin de si
Exemple : implémentation des pages Home locales des clients en mode contextuel
Dans l'exemple suivant, le paramètre $1, envoyé à la méthode base Sur connexion Web, est utilisé pour implémenter les pages Home des clients dans une entreprise. Le serveur Intranet fonctionne en mode contextuel.
La base contient deux tables : [Clients] et [Tables]. La Méthode base Sur ouverture ci-dessous initialise les tableaux interprocess utilisés ultérieurement par la Méthode base Sur connexion Web.
` Méthode base Sur ouverture ` Liste des tables TABLEAU ALPHA(31;<>taTables;Lire numero derniere table) Boucle ($vlTable;1;Taille tableau(<>taTables);1;-1) Si(Est un numero de table valide($vlTable)) <>taTables{$vlTable}:=Nom de la table($vlTable) Sinon SUPPRIMER DANS TABLEAU(<>taTables;$vlTable) Fin de si Fin de boucle ` Actions Web standard à la connexion TABLEAU ALPHA(31;<>taActions;2) <>taActions{1}:="Ajouter" <>taActions{2}:="Visualiser"
Le principal objectif de la méthode base Sur connexion Web est de déchiffrer les données de l'URL situées après l'adresse de l'hôte et d'agir en conséquence. La méthode est la suivante :
` Méthode base Sur connexion Web C_TEXTE($1;$2;$3;$4;$5;$6) C_TEXTE($vtURL) Si (Contexte Web) ` Si nous sommes bien en mode contextuel ` Par précaution, vérifiez que $1 est égal à "/" ou "/..." Si ($1="/@") ` Copier l'URL dans une variable locale moins le premier "/" $vtURL:=Sous chaine($1;2) ` Analyser l'URL et remplir un tableau local avec les informations de l'URL ` Par exemple, si les données supplémentaires de l'URL sont "aaa/bbb/ccc", le tableau ` contiendra les trois éléments "aaa", "bbb" et "ccc", dans cet ordre $vlElem:=0 TABLEAU TEXTE($atTokens;$vlElem) Tant que ($vtURL # "") $vlElem:=$vlElem+1 INSERER DANS TABLEAU($atTokens;$vlElem) $vlPos:=Position("/";$vtURL) Si ($vlPos>0) $atTokens{$vlElem}:=Sous chaine($vtURL;1;$vlPos-1) $vtURL:=Sous chaine($vtURL;$vlPos+1) Sinon $atTokens{$vlElem}:=$vtURL $vtURL:="" Fin de si Fin tant que ` Si des données supplémentaires sont passées au-delà de la partie hôte de l'URL Si ($vlElem>0) ` Utiliser le tableau interprocess initialisé dans la méthode base Sur ouverture ` Vérifier si la première information est un nom de table $vlTableNumber:=Chercher dans tableau(<>taTables;$atTokens{1}) Si ($vlTableNumber>0) ` Si oui, obtenir un pointeur vers cette table $vpTable:=Table($vlTableNumber) ` Définir les formulaires entrée et sortie FORMULAIRE ENTREE($vpTable->;"Input Web") FORMULAIRE SORTIE($vpTable->;"Output Web") ` Utiliser le tableau interprocess initialisé dans la méthode base Sur ouverture ` Vérifier si la deuxième information est une action standard connue $vlAction:=Chercher dans tableau(<>taActions;$atTokens{2}) Au cas ou ` Ajouter des enregistrements : ($vlAction=1) Repeter AJOUTER ENREGISTREMENT($vpTable->;*) Jusque (OK=0) ` Visualiser les enregistrements : ($vlAction=2) LECTURE SEULEMENT($vpTable->) TOUT SELECTIONNER($vpTable->) VISUALISER SELECTION($vpTable->;*) LECTURE ECRITURE($vpTable->) Sinon ` Ajouter éventuellement ici des actions standard supplémentaires à implémenter Fin de cas Sinon ` Ajouter éventuellement ici d'autres actions de table standard à implémenter Fin de si Fin de si Fin de si ` Dans tous les cas, poursuivre le processus standard de connexion WWW CONNEXION STANDARD Sinon ... ` Placer éventuellement ici le code gérant le mode sans contexte Fin de si
A ce stade, les membres de l'entreprise peuvent se connecter à la base et saisissent un URL en fonction des conventions définies. Les utilisateurs peuvent également créer des marqueurs "Favoris" s'ils ne veulent pas saisir l'URL à chaque connexion. En fait, la meilleure solution consiste à fournir à chaque membre de l'entreprise une page HTML qu'il peut utiliser en local pour accéder à la base. Voici la page HTML :
Autrement dit, la page HTML Dupont_IS.HTM est la page Home du client local pour le système d'informations de l'entreprise basé sur 4D. Si l'utilisateur clique sur le lien Créer produits, le navigateur Web se connectera à l'hôte dont l'URL est http://123.4.567.89/Produits/Ajout. Si l'adresse IP de l'ordinateur où se trouve la base est 123.4.567.89, la méthode base Sur connexion Web reçoit les données d'URL supplémentaires "/Produits/Ajout" dans $1 puis lance le processus d'ajout d'enregistrements à la table [Produits].
Enfin, les utilisateurs peuvent glisser-déposer les liens de cette page vers leur bureau pour créer une icône de raccourci Internet, telle que l'icône ci-dessous. Double-cliquer sur une de ces icônes envoie directement l'utilisateur dans la zone spécifiée de votre base 4D Web.
Le code source de cette page HTML est le suivant :
Référence
Méthode base Sur authentification Web, Présentation des méthodes base, URLs et actions de formulaires, Utiliser le mode contextuel.