DOCUMENTATION SUR LE GESTIONNAIRE DE FORMULAIRE SIMPLIFIE ET ASYNCHRONE : classeFormsMini.php

AUTEUR : FRANCK OBERLECHNER, Ingénieur Système et Réseaux


 

SOMMAIRE

1. Préambule

2. Installation de la classe

3. Déclaration de la page appelante

4. Déclaration de la page appelée

5. La sécurité

6. Le débuggage

A. LES EXEMPLES

 

 


1) PREAMBULE

La classe ClasseLogonMini.php permet de gérer facilement et par objet des champs d'un formulaire ou d'un tableau. La classe implémente un dialogue asynchrone de type AJAX (REQUETE : HttpRequest et REPONSE : fichier XML) entre une page appelante et une page appelée, on a besoin pour chaque formulaire de 2 pages :

La page appelante La Page appelée
  • définitions des objets (attributs)
  • affiche les objets (plusieurs instance d'un même objet sont possibles)
  • a chaque action sur un objet, on appele la page "asynchrone"

gère 3 types d'événements :

. INIT : initalisation de tous les champs du formulaire

. FIELD : gestion individuelle de chaque champ

. OK : validation de tout le formulaire


il est possible en retour et en fonction des événements déclencheurs de lancer des actions sur un ou plusieurs objets du formulaire :
- activer/désactiver un objet,
- changer sa valeur,
- restaurer sa valeur d'origine ,
-changer les options d'une liste

Le point faible d'une telle architecture est la sécurité : on doit empêcher toute autre page que la page appelante de faire des requêtes HttpRequest, sous peine de se faire pirater les données. Un mécanisme de sécurité à plusieurs niveaux a été mis en place nativement.
(voir chapitre SECURITE)


Le débuggage AJAX aïe aïe aïe ! Non avec les fonctions appropriées de débuggage
(voir chapitre DEBUGGAGE)


2) INSTALLATION

Définir un répertoire "include_path" en modifiant le fichier de configuration de PHP %SYSTEMROOT%\PHP.INI sous IIS

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
include_path = "d:/wwwroot/rubappli/communs"

Décompresser dans le répertoire "include_path" du serveur PHP le fichier classeLogon.php et le répertoire classeLogon (ce répertoire contient la documentation et les exemples)
On obtient l'arborescence :

    .../Répertoire_Include

    _classePath.php
    classeFormsMini.php
    classeFormsMini<dir>

    Editer le fichier _classePath.php et modifier la ligne DEFINE en terminant par un "/" obligatoirement, la constante INCLUDEPATH doit pointer sur le répertoire ou se situe le fichier classeForms.php et _classePath.php

 

    // PARAMETRAGE :
    DEFINE('INCLUDEPATH','/rubappli/communs/');

ATTENTION pour que toutes les pages de votre site fonctionnent définir de préférence un chemin absolu ( commencant par un / et donnant le chemin complet depuis la racine du site )

C'est tout ! la classe est maintenant exploitable directement

 

EN OPTION : DEFINITION D'UN THEME DE COULEUR IMPLICITE POUR TOUT LE SITE

Créer un fichier _classeSkin.php dans le répertoire des inclusions

<?php

// 0: Rouge, 1:Bleu, 2:Gris, 4:Vert, 5:Orange
DEFINE('DEFAULT_SKIN', 5);

?>

ce fichier est utilisé par les autres classes classeTableau, classeGrid tous les objets gérés par ces classes bénéficient du même thème de couleurs.

ATTENTION : L'INSTALLATION COMPLETE EST NECESSAIRE POUR TESTER LES EXEMPLES QUI SUIVENT

 

 


3) DECLARATION D'UNE PAGE APPELANTE

Contrairement au classeForms, cette page permet de définir les objets, mais ce n'est pas à son niveau que les accès à la base sont définit.

Elle a pour objet de :

 


4) DECLARATION D'UNE PAGE APPELEE

Cette page reçoit les événements et les transforme en action :

 

 


5) LA SECURITE

La faille de sécurité du système asynchrone AJAX, c'est l'acceptation par la page appelée de variables POST en provenance de n'importe quelle page qui viendrait la tromper et lui faire faire n'importe quoi.

La sécurité native offerte par classeFormsMini est à 2 niveaux :

- un dialogue de variables POST dont le nom est aléatoire et dynamique.

- l'acceptation par défaut de n'importe quelle page d'origine pourvu qu'elle soit dans le même répertoire que la page appelée.

 


6) LES ORDRES RETRO-ACTIFS

Ce sont les commandes télécommandés par la page appelée qui agit sur des objets de la page appelante

 

frm_field_enable() , frm_field_disable() pour activer ou désactiver un autre champ.

frm_field_show() , frm_field_hide() pour rendre visible ou nom un champ dynamiquement

frm_field_changevalue('NOM_DU_CHAMP','nouvelle valeur'), pour changer la valeur d'un champ

frm_field_changehref('ICO_HREF','mini_dump_get.php?TOTO=YES') , pour changer l'url d'un champ icone dynamiquement

frm_field_restorevalue('NOM_DU_CHAMP'), pour remettre la valeur d'origine du champ

frm_field_changeoptions(), pour changer les options d'une liste Voir un exemple

frm_field_focus('NOM_DU_CHAMP'), pour les champs textes, prend le focus sur un autre objet

 

frm_add_message('message affiché dans une boite d'alerte'), pour invoquer une boite d'alerte javascript au retour de l'appel asynchrone

frm_add_warning($chaine_de_warning), affiché en alerte si le mode debug n'est pas actif, sinon dans la trace

frm_add_comment($chaine_de_commentaire), affiché uniquement dans la trace en mode debug

 


7) LE DEBUGGAGE

La grosse difficulté dans la manipulation AJAX réside dans le débuggage des erreurs de programmation.

Cette action est facilité de plusieurs manières

- Dans la dans la page appelante, un appel à la fonction $f->frm_Debug(); permet de controler le dialogue page appelante / page appelée.

- Dans la page appelée, un appel à la fonction $f->frm_add_warning() qui permet de forcer l'affichage de la page XML en retour quelque soit le statut du débuggage dans le page appelante,
On peut retourner par exemple une requete SQL pour vérifier son exactitude

- Dans la page appelée, un appel à la fonction $f->frm_add_comment() qui permet d'afficher une chaine dans la page en retour uniquement si le statut du débuggage est actif.

Dans tous les exemples le picto est en fait un bouton actif, qui permet de changer dynamiquement le statut du débuggage et de le mémoriser dans un COOKIE disponible pour tous les exemples

Par défaut, les événements sont matérialisés par une alerte "popup" ce qui peut s'avérer rapidement pénible si le nombre d'événements est élevé.

un plaçant à l'endroit désiré à l'écran un appel à la fonction
print $f->frm_AfficherEvenements(); on affiche 2 zones de textes et un bouton d'effacement, qui journalise les événements en haut (le plus récent en haut) et affiche le fichier XML en retour.
Tout est invisible si le debuggage est inactif.


A) LES EXEMPLES

mini01_mono.php Formulaire simple
mini01_mono2.php Formulaire simple avec boutons de validation
mini02_change_listes.php Formulaire simple avec boutons de validation et listes dynamiques
mini02_change_listes_cachees.php Listes dynamiques qui apparaissent et disparaissent dynamiquement
mini06_invisibilite.php Affichage ou non de champs
mini07_champs_desordre.php Définition et Affichage dans un ordre différent
mini04_36000_choix.php Choix avec listes en cascade pour choisir une commune
mini05_champs_textes.php Champs textes
mini02_multi.php Formulaire tableau
mini02_multi2.php Formulaire tableau avec modification de DIV
mini02_multi3.php Formulaire tableau avec modification de DIV qui est inclus dans une fenêtre POPUP
mini10_base_reelle_comiques Formulaire tableau sur base réelle, les données sont enregistrées dans la base,
l'attribut confirm permet de poser une question avant de faire un appel à la page
mini12_urls Icone avec URL qui s'active ou non en fonction de l'état "disabled"
mini13_urls_en_tableau Icone en tableau avec URL variable et modifiables
mini14_tableau_de_nombres Tableau de nombre avec masques