We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28432
    • 372 Posts
    Salut à tous,

    Quelqu'un saurait il comment ajouter des variables de session dans un fichier externe à modx ? Oui externe à Modx car j'appelle ce fichier via Jquery Ajax ! [ed. note: Steeve last edited this post 14 years, 4 months ago.]
      • 36404
      • 307 Posts
      hello,

      deux petites choses
      1 - le contenu d'une page ajaxifiée peut tout à fait être "dans modx", c'est même le cas le plus souvent smiley
      2 - pour transmettre la session, ou du moins son contenu, pas 36 solutions
      a) toper $_SESSION ou au moins en tout cas les valeurs dont tu as besoin et les transmettre à la page en question dans une/des variable(s)
      il ne faut pas oublier que la session est nativement transmise par le navigateur du coup, une page distant, dans modx ou pas ne se la voit pas transmise
      b) stocker les variables de session (au moins celles dont tu as besoin) dans une table et les choper au passage dans la page appelée par ajax avant de servir le résultat de la requête ajax

      en gros, les cas les plus fréquents dans lesquels on a besoin de ça sont attraper un nom d'utilisateur et/ou ses droits pour afficher coucou ou savoir quoi afficher et, effectivement ça doit se passer côté serveur d'où le deux moyens de le faire, envoyer à la page les valeurs en question ou les stocker côté serveur pour qu'elle soit capable de les récupérer
      un autre moyen serait d'aller les piocher dans le cookie de session mais pour ça il faudrait être sûr de trop de choses
      1 - si cookie il y a ou pas
      2 - le chemin vers le cookie en question + son nom
      (remarqu,e tu peux toi générer le cookie en question comme ça tu sais ce que tu fais mais honnêtement, les deux autres moyens sont plus élégants smiley)

      have swing
        réfléchir avant d'agir
        • 28432
        • 372 Posts
        Salut virtualbear,

        J'ai utilisé la solution $_SESSION ! Pour le test j'ai fait un snippet qui affiche les session concerné
        echo $_SESSION['value']

        puis j'ai créer mon fichier php externe pour mon appel via ajax avec
        $_SESSION['value'] = 'toto';

        du coup mon snippet devrait afficher "toto" mais la rien. Pour vérifier j'ai placer le contenu de mon fichier dans le snippet juste avant le echo. Et la pas de soucis la variable de session est bien la. Du coup je ne comprend pas pourquoi le même bout de code fonctionne dans Modx et pas à l'exterieure ?

          • 36404
          • 307 Posts
          Salut,

          désolé, j'aurais dû m'abonner au thread pour voir que tu avais repondu

          alors, un petit truc que je ne comprends pas c'est ta variable de session dans le fichier php externe, il y a un truc que je n'ai pas dû bien comprendre dans ta première question
          je vais essayer de prendre le truc dans les deux sens

          - je pensais que tu voulais transmettre à un fichier que tu utilises avec ajax des variables présentes dans la session.
          ça, c'est jouable comme je te le décris plus haut

          - en revanche, tu ne peux pas transmettre, enfin plutôt ajouter à la session dans la page actuellement affichée des variables par une page ajax
          why ? rappelle-toi juste un truc, quand tu utilises ajax, tout se passe de façon asynchrone, la page actuellement affichée ne bouge pas, ni sa session, ni ce qu'elle a lu dans des cookies, ni son dom, etc
          avec ajax tu vas faire ton business côté serveur, inscrire des trucs dans la base, dans un fichier json ou autre, faire des calculs,et/ou l'inverse aller chercher, lire des données dans les même sources
          ensuite tu peux, ou pas afficher un résultat dans la page présente sans la rafraîchir
          j'ai souligné la fin parce que tout est là, une fois la page livrée par le serveur, tu ne peux plus rien ajouter à sa session, si dans un fichier côté serveur tu ajoutes une variable à la session, la page en question n'en "sait" rien la sienne est déjà chargée

          c'est un peu le même genre de problème (et de questions) qu'on rencontre avec le dom et ajax
          quand à la suite d'une requête ajax tu mets à jour du contenu dans une page, tu ne peux pas manipuler ce contenu avec les trucs que tu as déclarés dans le domready/document ready de ton js, puisque le contenu en question n'était pas dans le dom quand il a été chargé, il faut le faire dans le oncomplete/success ou autre de ta requête ajax

          too bad, il n'y a pas de oncomplete pour la session, elle est chargée une bonne fois pour toute quand le serveur sert la page, tout ce que tu ajoutes dans une session ou un cookie une fois la page servie ne sera disponible que dans la page suivante

          je ne sais pas si j'ai été très clair, cette fois, je m'abonne au post pour voir si tu as besoin de plus smiley

          have swing
            réfléchir avant d'agir
            • 28432
            • 372 Posts
            Salut,

            en faite j'avais résolu le problème grâce à ton post précédant. Mon réel problème et que mon fichier à part (php) appelé en Ajax n'arrivé pas à rajouter des valeurs aux variables de session.
            Du coup je t'ai écouté j'ai créer une page sans modèle, puis un Snippet avec le contenu de mon fichier (php) et j'appel cette page contenant mon snippet avec Ajax et la miracle tout fonctionne. Comme si MODx bloqué les variables session qui avait été rajouté à l’extérieur de MODx.

            Merci d'avoir répondu et d'avoir pris le temps !