version 2003 (Modifiée)
Le serveur Web 4D propose plusieurs URLs et actions de formulaires HTML spéciaux vous permettant d'effectuer différentes actions dans votre base de données, en mode contextuel ou en mode sans contexte.
Ces URLs sont les suivants :
4DMETHOD/, permettant de lier un objet HTML à une méthode projet de votre base en mode contextuel,
4DACTION/, permettant de lier un objet HTML à une méthode projet de votre base en mode sans contexte,
4DCGI/, permettant d'appeler la Méthode base Sur connexion Web depuis tout objet HTML.
En outre, le serveur Web 4D accepte plusieurs URLs supplémentaires :
/4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR et /4DWEBTEST, vous permettent d'obtenir diverses informations sur le fonctionnement de votre site Web 4D. Ces URLs sont décrits dans la section Informations sur le site Web.
/4DWSDL, permettant d'accéder au fichier de déclaration des Web Services publiés sur le serveur. Pour plus d'informations, reportez-vous à la section Commandes du thème Web Services (Serveur) et au manuel Mode Structure.
URL 4DACTION/
Syntaxe : 4DACTION/MaMéthode{/Param}
Mode : Sans contexte. Appelé depuis le mode contextuel, provoque la fermeture du process Web et le passage en mode sans contexte.
Utilisation : URL ou Action de formulaire.
Cet URL vous permet de lier un objet HTML (texte, image, bouton...) à une méthode projet 4D en mode sans contexte. Le lien sera du type /4DACTION/MAMETH/PARAMS où MAMETH est le nom de la méthode projet 4D à exécuter lorsque l'utilisateur clique sur le lien et PARAMS un paramètre optionnel de type Texte passé à la méthode dans $1 (reportez-vous ci-dessous au paragraphe "Les paramètres Texte passés aux méthodes via des URLs").
Lorsque 4D reçoit une requête /4DACTION/MAMETH/PARAMS, la Méthode base Sur authentification Web (si elle existe) est appelée. Si elle retourne Vrai, la méthode MAMETH est exécutée.
4DACTION/ peut être associé à un URL dans une page Web statique. La syntaxe de l'URL sera de la forme suivante :
La méthode projet MAMETH doit généralement retourner une "réponse" (envoi de page HTML via ENVOYER FICHIER HTML ou ENVOYER BLOB HTML, etc.). Veillez à effectuer les traitements les plus courts possibles, afin de ne pas bloquer le navigateur.
Note : Une méthode appelée par 4DACTION ne doit pas faire appel à des éléments d'interface (DIALOGUE, ALERTE...).
Attention : Pour qu'une méthode 4D puisse être exécutée via l'URL 4DACTION/, elle doit disposer de l'attribut "Disponible via 4DACTION, 4DMETHOD et 4DSCRIPT" (désélectionné par défaut), défini dans les propriétés de la méthode. Pour plus d'informations sur ce point, reportez-vous à la section Sécurité des connexions.
Exemple
Cet exemple décrit l'association de l'URL 4DACTION/ à un objet HTML image afin d'afficher dynamiquement une image dans la page. Vous insérez dans une page HTML statique les instructions suivantes :
<IMG SRC="/4DACTION/PICTFROMLIB/1000">
Le code de PICTFROMLIB est le suivant :
C_TEXTE($1) `Ce paramètre doit toujours être déclaré C_IMAGE($VarImage) C_BLOB($VarBlob) C_ENTIER LONG($Numéro) `On récupère le numéro d'image dans la chaîne $1 $Numéro:=Num(Sous chaine($1;2;99)) LIRE IMAGE DANS BIBLIOTHEQUE($Numéro;$VarImage) IMAGE VERS GIF($VarImage;$VarBlob) ENVOYER BLOB HTML ($VarBlob;"image/gif")
4DACTION pour poster des formulaires
Le serveur Web 4D permet une facilité supplémentaire lorsque vous souhaitez utiliser des formulaires "postés", c'est-à-dire des pages HTML statiques renvoyant des données au serveur Web. L'action du formulaire doit impérativement débuter par /4DACTION/NomMéthode.
Note : Un formulaire peut être soumis dans deux modes (4D accepte les deux) :
POST, généralement utilisé pour envoyer des données vers le serveur Web - dans une base de données.
GET, généralement utilisé pour interroger le serveur Web - données en provenance de la base.
Lorsque le serveur Web reçoit un formulaire posté, il appelle la méthode projet COMPILER_WEB (si elle existe), puis la Méthode base Sur authentification Web (si elle existe). Si elle retourne Vrai, la méthode NomMéthode est exécutée. 4D analyse les champs HTML présents dans le formulaire, récupère leurs valeurs et remplit automatiquement des variables 4D avec leur contenu. Il suffit pour cela que les champs du formulaire et les variables 4D portent le même nom.
Vous pouvez également utiliser la commande LIRE VARIABLES FORMULAIRE WEB, permettant de récupérer le nom et la valeur de tous les champs inclus dans une page HTML soumise au serveur.
Note : Pour plus d'informations, reportez-vous à la section Associer des objets 4D à des objets HTML.
La syntaxe HTML à appliquer dans le formulaire est du type suivant :
pour la définition de l'action du formulaire :
<FORM ACTION="/4DACTION/NomMéthode" METHOD=POST>
pour la définition d'un champ du formulaire :
<INPUT TYPE=Type de champ NAME=nom du champ VALUE="Valeur par défaut">
Pour chaque champ du formulaire, 4D affecte la valeur du champ à la variable de même nom.
Pour les options de formulaires (par exemple les cases à cocher), 4D affecte la valeur 1 à la variable associée s'il est coché, sinon 0.
Pour les saisies de type numérique, 4D effectue une conversion Alpha>Numérique de la valeur du champ.
Note : Si un champ du formulaire est nommé OK (par exemple un bouton Submit), la variable système OK de 4D est mise à 1 si la valeur du champ est non vide, sinon 0.
Exemple
Dans une base Web 4D démarrée et utilisée en mode "sans contexte", nous souhaitons que les navigateurs puissent effectuer des recherches parmi les enregistrements par l'intermédiaire d'une page HTML statique. Cette page s'intitule "search.htm". La base contient d'autres pages statiques, permettant par exemple d'afficher le résultat de la recherche ("results.htm"). Le type POST a été associé à la page, ainsi que l'action /4DACTION/SEARCH. Voici la page telle qu'elle apparaît dans un éditeur HTML, ici Adobe® PageMill :
Voici le code HTML correspondant à cette page :
<FORM ACTION="/4DACTION/PROCESSFORM" METHOD=POST> <INPUT TYPE=TEXT NAME=VNAME VALUE=""><BR> <! Habituellement on met le nom du bouton dans VALUE, pour des raisons d'interprétation il faut mettre un nombre dans VALUE> <INPUT TYPE=CHECKBOX NAME=EXACT VALUE="1">Mot entier<BR> <! OK est un cas particulier> <INPUT TYPE=SUBMIT NAME=OK VALUE="Chercher"> </FORM>
En cours d'utilisation, vous tapez "ABCD" dans la zone de saisie, vous cochez l'option et validez en cliquant sur Chercher.
4D appelle alors la méthode projet COMPILER_WEB. Voici son contenu :
C_TEXTE(VNAME) VNAME:="" C_ENTIER LONG(vEXACT) vEXACT:=0 OK:=0 `cas particulier
Dans l'exemple, VNAME contient la chaîne "ABCD", vEXACT a pour valeur 1, et OK a pour valeur 1 (car on a cliqué sur un bouton dont le nom est OK).
4D appelle la Méthode base Sur authentification Web (si elle existe), puis la méthode projet PROCESSFORM, dont voici le contenu :
Si (OK=1) Si (vEXACT=0) `Si l'option n'a pas été cochée vNAME:=VNAME+"@" Fin de si CHERCHER([Jockeys];[Jockeys]Nom=vNAME) vLIST:=Caractere(1) `Retourne la liste en HTML DEBUT SELECTION([Jockeys]) Tant que (Non(Fin de selection([Jockeys]))) vLIST:=vLIST+[Jockeys]Nom+" "+[Jockeys]Tél+"<BR>" ENREGISTREMENT SUIVANT([Jockeys]) Fin tant que ENVOYER FICHIER HTML("results.htm") `Envoi de la liste dans le `formulaire results.htm, qui contient une référence à la variable vLIST, `par exemple <!4DVAR vLIST> ... Fin de si
URL 4DMETHOD/
Syntaxe : 4DMETHOD/MaMéthode{/Param}
Mode : Contextuel. Appelé depuis le mode sans contexte, provoque le passage en mode contextuel.
Utilisation : URL ou Action de formulaire.
Cet URL vous permet de lier un objet HTML (texte, bouton...) à une méthode projet 4D en mode contextuel. Le lien sera du type /4DMETHOD/Nom_Méthode/Param où Nom_Méthode est le nom de la méthode projet 4D à exécuter lorsque l'utilisateur clique sur le lien et Param un paramètre optionnel de type Texte passé à la méthode dans $1 (reportez-vous ci-dessous au paragraphe "Les paramètres Texte passés aux méthodes via des URLs").
L'envoi d'une requête HTTP débutant par l'URL 4DACTION/ provoque l'exécution de la méthode projet 4D désignée. La méthode projet peut elle-même afficher des formulaires 4D, d'autres pages HTML, etc.
Lorsque 4D reçoit une requête /4DMETHOD, la Méthode base Sur authentification Web (si elle existe) est appelée. Si elle retourne Vrai, la Méthode base Sur connexion Web (si elle existe) est appelée, puis la méthode Nom_Méthode est exécutée avec comme paramètre (dans $1) la chaîne /Param.
Si vous affectez /4DMETHOD/Nom_Méthode en tant qu'action de formulaire à une page HTML statique, la méthode est exécutée lorsque l'utilisateur clique sur un bouton Submit dans le formulaire HTML. Reportez-vous à l'exemple de la commande ENVOYER FICHIER HTML.
Lorsque vous intégrez des pages HTML dans 4D, vous utilisez généralement des boutons de type Normal ou Submit.
Pour définir l'action d'un formulaire, la syntaxe HTML à employer est de la forme suivante :
<FORM ACTION="/4DMETHOD/NomMéthode" METHOD=POST>
Pour plus d'informations sur les formulaires postés, reportez-vous au paragraphe précédent.
Attention : Pour qu'une méthode 4D puisse être exécutée via l'URL 4DMETHOD/, elle doit disposer de l'attribut "Disponible via 4DACTION, 4DMETHOD et 4DSCRIPT" (désélectionné par défaut), défini dans les propriétés de la méthode. Pour plus d'informations sur ce point, reportez-vous à la section Sécurité des connexions.
URL 4DCGI/
Syntaxe : 4DCGI/<action>
Mode : Tous.
Utilisation : URL.
Lorsque le serveur Web 4D reçoit l'URL /4DCGI/<action>, la Méthode base Sur authentification Web (si elle existe) est appelée. Si elle retourne Vrai, le serveur Web appelle la Méthode base Sur connexion Web en passant l'URL "tel quel" dans $1.
L'URL 4DCGI/ ne correspond à aucun fichier. Il a pour unique rôle d'appeler 4D via la Méthode base Sur connexion Web. Le paramètre "<action>" peut contenir n'importe quel type d'information.
Cet URL vous permet donc d'effectuer tout type de traitement. Il vous suffit de tester la valeur de $1 dans la Méthode base Sur connexion Web ou dans une de ses sous-méthodes et d'effectuer dans 4D le traitement adéquat. Par exemple, vous pouvez construire des pages HTML statiques entièrement personnalisées d'ajout, de recherche ou de tri d'enregistrements, ou encore générer des images GIF à la volée. Des exemples d'utilisation de cet URL sont fournis dans les descriptions des commandes IMAGE VERS GIF et ENVOYER REDIRECTION HTTP.
A l'issue du traitement, une "réponse" doit être retournée, à l'aide d'une des commandes d'envoi de données (ENVOYER FICHIER HTML, ENVOYER BLOB HTML, etc.).
ATTENTION : Veillez à effectuer les traitements les plus courts possibles, afin de ne pas bloquer le navigateur.
Paramètres texte passés aux méthodes 4D appelées via des URLs
4e Dimension envoie des paramètres Texte aux méthodes 4D appelées par des URLs spéciaux (4DMETHOD/, 4DACTION/ et 4DCGI/), en mode contextuel et en mode sans contexte. Voici quelques remarques sur ces paramètres :
Même si vous n'utilisez pas ces paramètres, vous devez les déclarer explicitement avec la commande C_TEXTE, sinon des erreurs runtime se produiront lorsque vous accèderez par le Web à une base exécutée en mode compilé.
Le paramètre $1 retourne des données supplémentaires placées à la fin de l'URL, et peut être utilisé pour passer des données de l'environnement HTML vers l'environnement 4D.
Erreurs runtime en mode compilé
Prenons un exemple : vous exécutez une méthode liée à un objet HTML. Vous obtenez l'écran suivant dans votre navigateur Web :
Cette erreur runtime est provoquée par l'absence de déclaration du paramètre texte $1 dans la méthode 4D appelée lorsque vous avez cliqué sur le lien HTML. Comme le contexte de l'exécution est la page HTML courante, l'erreur fait référence à la "ligne 0" de la méthode qui a envoyé la page au navigateur Web.
Pour reprendre l'exemple de la section Serveur Web, Premiers pas (Partie I), le paramètre texte $1 est déclaré explicitement dans les méthodes M_ADD_RECORDS et M_LIST_RECORDS :
`Méthode projet M_ADD_RECORDS C_TEXTE($1) ` Ce paramètre DOIT être explicitement déclaré Repeter AJOUTER ENREGISTREMENT ([Clients]) Jusque (OK=0)
`Méthode projet M_LIST_RECORDS C_TEXTE($1) ` Ce paramètre DOIT être explicitement déclaré TOUT SELECTIONNER ([Clients]) MODIFIER SELECTION([Clients])
Lorsque que ces déclarations sont effectuées, les erreurs runtime en mode compilé ne se produisent pas.
Paramètres à déclarer explicitement dans la méthode appelée
Vous devez déclarer différents paramètres en fonction de l'origine et de la nature de l'appel de la méthode 4D.
Méthode base Sur authentification Web (si elle existe) et Méthode base Sur connexion Web
Vous devez déclarer les six paramètres de la connexion :
` Méthode base Sur connexion Web C_TEXTE($1;$2;$3;$4;$5;$6) ` Ces paramètres DOIVENT être explicitement déclarés
Méthode appelée par l'URL 4DMETHOD/
Vous devez déclarer le paramètre $1 :
` Méthode appelée par l'URL 4DMETHOD/ C_TEXTE($1) ` Ce paramètre DOIT être explicitement déclaré
Méthode appelée par l'URL 4DACTION/
Vous devez déclarer le paramètre $1 :
` Méthode appelée par l'URL 4DACTION/ C_TEXTE($1) ` Ce paramètre DOIT être explicitement déclaré
Méthode appelée par la balise 4DSCRIPT/
La méthode retourne une valeur dans $0. Vous devez déclarer les paramètres $0 et $1 :
` Méthode appelée par 4DSCRIPT/ sous forme de commentaire HTML C_TEXTE($0; $1) ` Ces paramètres DOIVENT être explicitement déclarés
Référence
Associer des objets 4D à des objets HTML, LIRE VARIABLES FORMULAIRE WEB, Premiers pas, Utiliser le mode contextuel.