Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : syl

Date : 05/07/2006 21:02

Bonsoir à tous,

Je regarde quelques solutions de passage de parametre du XUL vers un script PHP qui va générer un fichier RDF pour peupler un template

Petite question bête :

Est-il possible de passer des parametres (en POST ou GET ?) directement via la valeur de datasource dans un template, un truc du genre:

<tree id="tree" ref="urn:data:row" datasources="create_rdf.php?var=1">...

Je n'ai rien vu dans les tutoriel concernant cette possibilité ! Est-ce possible ?

Merci par avance

Bonne soirée

Sylvain

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : thefab

Date : 05/07/2006 22:36

Oui bien sur que c'est possible, c'est du GET dans ce cas.

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : syl

Date : 06/07/2006 09:28

Merci bien thefab

Peut on envoyer du POST selon une méthode comparable (directement a partir du template) ou faut-il passer obligatoirement par un XMLhttprequest ? Moi ça ne me semble pas possible mais vu que je débute, je ne me fais pas trop confiance...

Bonne journée

Sylvain

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : laurentj

Date : 06/07/2006 10:35

tu ne peux indiquer qu'une url. Donc que des paramèters get. Si tu tiens absolument du POST (pourquoi faire ??), il faut passer effectivement par xmlhttprequest, mais aprés il faut manipuler des objets XPCOM RDF. Et là, si c'est une appli web (et pas chrome), tu ne peux pas.

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : syl

Date : 06/07/2006 11:01

C'est ce qu'il me semblait.

Pourquoi faire du POST plutôt que du GET : En fait, dans mon esprit le POST te permet de faire passer beaucoup plus de données que du GET, du fait de la longueur limitée de l'URL. C'est pour cela que je le trouvais avantageux, car dans les éléments de mon appli à transmettre, il y a des chaines de SQL qui peuvent etre longues. J'utiliserais alors xmlhttprequest avec probablement une petite touche de JSON, apres quelques recherches sur le sujet... A moins qu'il n'y ait une meilleure solution pour transmettre des longues chaines de caractère au serveur...?

Merci

Sylvain

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : thefab

Date : 06/07/2006 13:04

Effectivement POST permet de passer plus de données, par contre ce n'est pas à l'interface utilisateur d'envoyer les requêtes SQL c'est trop dangereux: remplacement d'un SELECT par un DELETE!

Dans le titre du message tu dis bien envoi de paramètres, ce sont donc uniquement les paramètres (id et autres) que tu passes au PHP, celui-ci effectue les vérification et exécute la requête SQL qui ne doit pas être visible par l'utilisateur final.

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : laurentj

Date : 06/07/2006 18:06

euh oui, envoyer des requêtes SQL plutôt que des paramètres, c'est un gros trou de sécurité là. Non seulement ça dévoile la structure de tes données (pour éventuellement profiter d'autres trous de sécurités offert par des scripts qui n'accepte que des paramètres), mais en plus ça peut permettre à n'importe qui de manipuler ta base...

Tsss pas de requete en paramètre ! jamais ! pas propre !

Les services web propres, c'est : des paramètres contenant des valeurs, et en retour, des valeurs.

Surtout que si ta base évolue ? obligé de changer la partie serveur (service web), mais aussi la partie cliente, l'interface ! Alors qu'avec une architecture propre, ça limite les modifs du client.

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : syl

Date : 07/07/2006 01:33

Oui vous avez raison...bien sur. En fait je parlais d'envoi de requete car il est prévu dans mon appli la creation de requetes personnalisée par l'utilisateur donc coté client (limitées à DU SELECT sur des Vues) Je n'avais pas encore défini le détail de la chose. Je vais donc envoyer uniquement les données correspondant aux parties des requetes (Les champs, les conditions, champs de jointure eventuels, vues selectionnées,...) via un XMLhttprequest en méthode post puis je reconstiturais la requete complète côté serveur.

Merci pour vos coups d'oeil éclairés

A bientôt probablement

Sylvain

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : hhf

Date : 09/07/2006 16:04

Moi, je te conseille, bien sur comme laurent de ne pas passer n'importe koi dans l'url, mais je te conseille un autre system :

1) tu envois tes parametres via AJAX en asynchrone au server. qui lui te renvois un fichier XML de la forme (par exemple) :

<response>
  <action></action><!-- action eventuelle par exemple retour a la page de login si deconnection -->
  <error></error><!-- Message d'erreur s'il y a -->
  <ok>true</ok><!-- la requete au server c'est bien passé -->
  <resultat>20</resultat><!-- nombre de ligne de resultat -->
</response>

Bien sur le server aura pour l'utilisateur demandeur stoké les resultats dans une table temporaire.

Si le resultats est long à calculé pourkoi ne pas mettre un systeme de Thread... dans ce cas une info est retourné à la methode qui traite le retour de la requete AJAX comme koi le resultat n'est pas terminé est donc réitère une demande quelque instant aprés.

Une fois que le server à retourné une reponse positive sur le calcul. à ce moment la tu set le datasources de ton <tree> avec un url (donc get) du style :

 "result_rdf.php"

tu recups le user dans la session, puis la table temporaire associé, tu crées ton RDf et le tour est joué

Cerise sur le gateau, tu peut mettre un progressmeter que tu fais scroller tant que le calcul n'est pas terminé. Et dans le file XML, tu rajoute une info sur le nombre de resultat retourné pour l'afficher dans un <label>

Voilà. Tous ceci fonctionne parfaitement pour moi. Mis à part que pour moi c'est du JAVA coté server.

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : syl

Date : 10/07/2006 18:06

Merci hhf

ca me semble pas mal, je vais essayer une structure de ce type, il faut que je potasse encore un peu sur comment coder cela...

j'en profites, aurais-tu, par hasard, un petit bout de code javascript qui implémente ces fonctions pour le côté client,histoire d'avoir un exemple ?

A la prochaine

Syl

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : hhf

Date : 10/07/2006 20:20

Pour ma part j'utilise des librairie maison (j'aime bien controler tous le code de bout en bout, mais je suis un fou... :-) ) donc pour faire rapide :

marequete = {

 send : function() {
   var params = "param1=1&param2=2&param3=3";
   var req = new XMLHttpRequest();
   req.open("POST", "www.addr_de_mon_site.com", true);
   req.onreadystatechange = function () {
     if (req.readyState == 4) {
        if(req.status == 200) {
           this.confirm(req.responseXML);
        } else alert("probleme server")
     }
   };
   req.send(params);
 },
 confirm : function(doc) {
   if(doc.documentElement.getElementsByTagName("ok")[0].textContent=="true") {
      alert("la requete a retourné : "+doc.documentElement.getElementsByTagName("resultats")[0].textContent);     
    // chargement du RDF
   } else {
      alert(doc.documentElement.getElementsByTagName("error")[0].textContent);
   }
 }

Voila pour l'idee.

Pour allé un peu plus loin, tu te fais une classe Server, qui a une methode askXMLFile, qui prend en argument un Object Params (je reviens dessus apres) et une function

Sur Server tu fais aussi une methode statique qui convertie un object en une chaine de parametres :

de sorte :

 var oParams = {
   param1 : "1",
   param2 : "2",
   param3 : "3",
   seed : Math.random()
 }
 var sParams = Server.getParamsStringFromParamsObject(oParams);
 
 donne : "param1=1&param2=2&param3=3&seed=0.2131465";

// seed est un parametre aleatoire qui te garantie que toute les requete aboutirons au server et non l'utilisation du cache.

Voila pour l'idee, si ta des questions n'hesite pas...

# Re: Envoi de paramètres au serveur directement à partir de template XUL

Envoyé par : syl

Date : 19/07/2006 10:38

Merci pour les bouts de code, je m'y penche

Syl

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.