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.
Ces URLs sont les suivants :
4DACTION/, permettant de lier un objet HTML à une méthode projet de votre base,
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 Développement.
Cet URL vous permet de lier un objet HTML (texte, image, bouton...) à une méthode projet 4D. 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 :
<A HREF="/4DACTION/MAMETH/PARAMS"> Faire Quelque Chose</A>
La méthode projet MAMETH doit généralement retourner une “réponse” (envoi de page HTML via WEB ENVOYER FICHIER ou WEB ENVOYER BLOB, 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 les balises HTML et les URLs 4D (4DACTION...)” (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.
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 BLOB($VarImage;$VarBlob;".gif") WEB ENVOYER BLOB($VarBlob;"image/gif")
Le serveur Web 4D permet également d'utiliser des formulaires “postés”, c’est-à-dire des pages HTML statiques renvoyant des données au serveur Web, et de récupérer facilement l'ensemble des valeurs. 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 base Sur authentification Web (si elle existe). Si elle retourne Vrai, la méthode NomMéthode est exécutée. Dans cette méthode, vous devez appeler la commande WEB LIRE VARIABLES afin de récupérer le nom et la valeur de tous les champs inclus dans une page HTML soumise au serveur.
Note de compatibilité : Dans les bases converties, si l'option "Affectation automatique des variables" de la Page Compatibilité est cochée, la méthode projet spéciale COMPILER_WEB (si elle existe) est appelée au préalable ; 4D récupère les valeurs des champs HTML présents dans le formulaire et remplit automatiquement les variables 4D dans la méthode appelée avec leur contenu si elles portent le même nom. Ce fonctionnement est obsolète. Pour plus d'informations, reportez-vous à la section Traiter les données reçues.
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.
Dans une base Web 4D, 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 le code HTML correspondant à cette page :
C_TEXTE($1) //obligatoire pour le mode compilé C_ENTIER LONG($vName) C_TEXTE(vNAME;vLIST) TABLEAU TEXTE($tabNoms;0) TABLEAU TEXTE($tabVals;0) WEB LIRE VARIABLES($tabNoms;$tabVals) //on récupère toutes les variables du formulaire $vName:=Chercher dans tableau($tabNoms;"vNAME") vNAME:=$tabVals{$vName} Si(Chercher dans tableau($tabNoms;"vEXACT")=-1) //Si l’option n’a pas été cochée vNAME:=VNAME+"@" Fin de si CHERCHER([Jockeys];[Jockeys]Nom=vNAME) DEBUT SELECTION([Jockeys]) Tant que(Non(Fin de selection([Jockeys]))) vLIST:=vLIST+[Jockeys]Nom+" "+[Jockeys]Tél+"<BR>" ENREGISTREMENT SUIVANT([Jockeys]) Fin tant que WEB ENVOYER FICHIER("results.htm") //Envoi de la liste dans le //formulaire results.htm, qui contient une référence à la variable vLIST, //par exemple <!--4DHTML vLIST--> //... Fin de si
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 BLOB et WEB 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 (WEB ENVOYER FICHIER, WEB ENVOYER BLOB, etc.).
ATTENTION : Veillez à effectuer les traitements les plus courts possibles, afin de ne pas bloquer le navigateur.
4D envoie des paramètres Texte aux méthodes 4D appelées par des URLs spéciaux (4DACTION/ et 4DCGI/). 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 message est du type "Error in dynamic code Paramètres incorrects dans une commande EXECUTER Method Name: Line Number: Description: [<date et heure>]" 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 ne référence pas spécifiquement de ligne de méthode. Déclarer explicitement le paramètre texte $1 permet de supprimer ces erreurs :
//Méthode projet M_SEND_PAGE C_TEXTE($1) // Ce paramètre DOIT être explicitement déclaré //... WEB ENVOYER FICHIER($mapage)
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.