fonction GET et envoi variable

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • fonction GET et envoi variable

    Bonjour,

    Sous Joomla 4, j'envoie une variable (operator) et sa valeur (var) d'une page PHP à une autre page PHP par un lien HREF.

    Code HTML:
    <a href="index.php?option=com_xxx&view=personne&Itemid=343&lang=fr?operator=<?php echo $var;  ?" >Afficher profil</a>
    Théoriquement, la page de destination doit avoir dans son URL le nom de la variable et sa valeur, afin que je puisse la récupérer dans ma page de destination/fichier.

    Or, ni le nom de la variable ni sa valeur n'apparaissent dans l'URL de la page de destination et, la page bien qu'elle soit appelée (url ok, à défaut de la mention de la variable) est en erreur.

    ​Si j'ajoute manuellement à l'URL de la page de destination "&sujet=2", la variable est récupérable dans cette page par la fonction GET et la page s'affiche normalement.

    Quelle peut être la solution à ce problème ?

    Merci de vos réponses,

    Très cordialement

    Philippe

  • #2
    Bonjour,
    Si c'est un copier/coller, votre balise PHP n'est pas fermée correctement :
    Code:
    <?php ... ?>

    Commentaire


    • #3
      Bonjour Fred,

      Tu as raison, il manquait le ">" pour fermer la balise.

      C'était une erreur en recopiant le code.

      Mon fichier sur le serveur comporte bien la fermeture de la balise et, donc le problème reste non résolu.

      Pour avancer, après ma balise HREF, j'ai fait un ECHO de la variable, afin de voir si elle était bien présente dans mon fichier et, elle y est bien présente.

      Puisque sur la page de destination, si j'ajoute à la fin de l'URL &operator=$var, la page s'affiche normalement avec la bonne valeur.

      J'en déduis que le problème vient du fait que quelque chose empêche l'URL de la page de destination de se compléter.

      Après avoir parcouru de nombreux forums, je n'ai toujours pas trouvé la solution.

      Si quelqu'un a des idées, je suis preneur.

      Philippe

      Commentaire


      • #4
        Bonjour,

        J'ai trouvé.

        Le suffixe du nom de la variable est à faire précéder de & et non pas de ?

        Donc, la bonne syntaxe est :

        Code HTML:
        <a href="index.php?option=com_xxx&view=personne&Itemid=343&lang=fr&operator=<?php echo $var; ?>">Afficher mon profil</a>
        Bonne journée

        Philippe

        Commentaire


        • #5
          Hello.

          Qu'est ce que tu cherches à récupérer et dans quel contexte ?
          C'est les informations de l'utilisateur connecté ?

          De + il ne faudrait pas utiliser les super-globales.
          Voir : https://www.dionysopoulos.me/book/ad...erglobals.html
          A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
          Rejoignez le Joomla Users Groupe Alsace...
          roland_d_alsace va-t-il devenir roland_du_grand_est ?

          Commentaire


          • #6
            Bonjour Roland,

            Je te remercie de t'intéresser à mon problème.

            J'ai un formulaire basique que l'internaute complète avec divers champs (nom, prénom, etc ...). C'est un formulaire issu d'un composant que je construit et non le formulaire d'inscription de type CONNECT.

            De la sorte, il y a des enregistrements A, B C ... composés chacun d'une vingtaine de champs.

            Une fois le formulaire complété, les données des champs sont dans la table de mon composant dans la BDD.

            En front, l'internaute peut disposer d'une liste des enregistrements ainsi constitués, avec en vision les champs principaux de chaque enregistrement.

            En cliquant sur un lien présent pour chaque enregistrement de cette liste, il peut voir l'ensemble des champs correspondant à l'enregistrement cliqué (A), sachant qu'il a la possibilité dans cette liste développée d'appeler les enregistrements qui lui sont liés (ex. : B) par une balise HREF.

            Mon problème a été résolu comme indiqué plus haut via la fonction GET :
            . A l'URL de la page d'origine, j'ai ajouté &operator + un echo de ma variable (qui correspond à un champ de l'enregistrement B)
            . Je récupère sur la page de destination par GET ma variable qui permet l'affichage de l'enregistrement B comme indiqué précédemment

            Pour éviter des problèmes dans la page de destination, l'appel de la variable B s'effectue comme suit :

            Code PHP:

            <?php

            if(!isset($_GET['operator']))
            {
            $idperso htmlspecialchars ($_POST['id'], ENT_QUOTES,'UTF-8');}

            else    
            {
            $idperso htmlspecialchars $_GET['operator'], ENT_QUOTES,'UTF-8');}

            ?>
            Ainsi, je pensais ainsi avoir réglé les problèmes de sécurité.

            J'ai pris connaissance du lien que tu m'as envoyé et suis perplexe car,il n'explique pas clairement comment procéder :
            . dans la page d'origine
            . Dans la page de destination

            Aussi, j'ai les questions suivantes :
            . Page d'origine : ajouter au bout de l'URL le nom de la variable + sa valeur est il sécurisé ?
            . Page de destination : aux adaptations près, le script proposé (something ... default) est-il à placer dans cette page pour récupérer la variable ?

            Merci de ta réponse.

            Bonne journée et bon week-end

            Philippe

            Commentaire


            • #7
              Hello.

              Récupérer une variable de formulaire html ou d'url :
              Code PHP:
              use Joomla\CMS\Factory;

              ....


              $app Factory::getApplication();
              $input $app->getInput();
                
              ​$id $input->getInt('id'null);​ // récupère id (si entier) passé en post ou en get avec null par defaut 
              Pour la sécurité du formulaire, il faut ajouter un token et le vérifier en retour (dans le template de la vue - voir /components/com_content/src/tmpl/edit.php)

              Code PHP:
              use Joomla\CMS\HTML\HTMLHelper;​
              .
              .
              <form action="<?php echo Route::_('index.php?option=​....>
              .
              echo HTMLHelper::_('
              form.token'); // génere un hidden avec un token
              .
              .
              </form>
              .
              .
              Et le contrôle (normalement à faire dans le contrôleur) au retour du formulaire :
              Code PHP:
              use Joomla\CMS\Session\Session​;
              .
              .
              .
              Session::checkToken() or exit(JText::_('JINVALID_TOKEN'));​ // controle le token avec celui sauvegardé en session à la génération 
              A noter que le controle du token est fait automatiquement si l'extension respecte les nouvelles normes de codage du framework de J4 et +
              Dernière édition par roland_d_alsace à 06/01/2024, 17h24
              A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
              Rejoignez le Joomla Users Groupe Alsace...
              roland_d_alsace va-t-il devenir roland_du_grand_est ?

              Commentaire


              • #8
                Roland,

                Merci de tes éclaircissements.

                Je vais mettre cela en place et reviendrai vers toi ensuite.

                Bonne soirée

                Philippe

                Commentaire


                • #9
                  Bonjour Roland,

                  J'ai suivi tes recommandations et, cela marche parfaitement.

                  Merci encore de tes explications très claires.

                  Cordialement

                  Philippe

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X