Menu type connexion qui renvoie sur une adresse externe

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

  • Menu type connexion qui renvoie sur une adresse externe

    Bonjour,
    Mon objectif est d'avoir un lien de menu qui renvoie vers une adresse externe :
    -> directement pour les utilisateurs déjà enregistrés
    -> en passant par le formulaire de connexion pour les autres

    J'ai utilisé la solution proposée par Rajoz ici : http://forum.joomla.fr/showthread.ph...=1#post1027408

    J'ai donc 2 liens de menu (qui s'affichent dans des modules menu en accès public) :

    - 1 lien "Menu", alias "menu", de type url externe, accès Enregistré
    - 1 lien "Menu", alias "menu-login" de type connexion, accès Invité, paramètre de redirection après connexion : "http://www.monsite.fr/menu" pour récupérer l'adresse du lien sécurisé puisqu'on ne peut pas mettre d'url externe dans ce paramètre.

    Ca fonctionne presque, le problème c'est que lorsque je me connecte en passant par le formulaire, je suis renvoyée sur www.monsite.fr/menu sans être renvoyée sur l'url externe, ce qui aboutit à une 404.
    Il doit y avoir quelque chose dans le mécanisme des menus que je n'ai pas bien compris, ou alors l'url externe n'est juste pas accessible de cette manière.
    J'ai aussi essayé avec un lien qui ne s'affiche nulle part mais qui est en accès public, le résultat est le même.

    Merci de votre aide !

  • #2
    Re : Menu type connexion qui renvoie sur une adresse externe

    Personne n'a une idée ?
    J'ai essayé de renvoyer sur un menu de type alias qui renvoie lui-même sur le lien de menu de type url externe, pas d'amélioration...

    Commentaire


    • #3
      Re : Menu type connexion qui renvoie sur une adresse externe

      Bon j'ai réussi à modifier la redirection du login en passant par un override sur le fichier mon_template\html\com_users\login\default_login.ph p sur la ligne
      Code HTML:
      <form action="<?php echo JRoute::_('http://url.externe.fr'); ?>" method="post" class="form-validate form-horizontal well">
      Mais le souci pour moi c'est que ça modifie toutes les pages de connexion alors que j'ai besoin de rediriger sur des adresses différences selon les menus...
      Est-ce que quelqu'un saurait si il y a un moyen de prendre un autre paramètre en compte et de passer ça dans un code conditionnel ?

      J'avais aussi pensé que j'utilise une adresse SEF (http://www.monsite.fr/menu) pour renvoyer sur le lien de menu de type url externe dans le paramètre de redirection après connexion et ce n'est peut-être pas correct. Peut-être qu'il faut une autre syntaxe ?

      Merci !!

      Commentaire


      • #4
        Re : Menu type connexion qui renvoie sur une adresse externe

        J'ai essayé de récupérer mon titre de page pour faire quelque chose comme ça :

        Code PHP:
        <form action="<?php if (($this->escape($this->params->get('page_heading'))) == 'Mon_titre')
                                        { echo 
        JRoute::_('http://url.externe.fr'); }
                                    else
                                        { echo 
        JRoute::_('index.php?option=com_users&task=user.login'); }
                              
        ?>" method="post" class="form-validate form-horizontal well">
        Pour l'instant ça ne fonctionne pas, je suis renvoyée à l'accueil avec un petit message d'erreur. C'est peut-être une erreur php (vu que je ne m'y connais pas plus que ça) ou la méthode qui n'est pas la bonne..
        Dernière édition par 8Fanny8 à 21/03/2016, 15h42

        Commentaire


        • #5
          Re : Menu type connexion qui renvoie sur une adresse externe

          Bon, ben ça marche ! Forcément c'était pas si compliqué, le message d'erreur était normal et j'ai du faire une petite erreur de syntaxe...

          Voilà le code final donc, à adapter selon les titres donnés aux pages de connexion :

          Créer le fichier mon_template\html\com_users\login\default_login.ph p, et remplacer :
          Code PHP:
              <form action="<?php echo JRoute::_('index.php?option=com_users&task=user.login'); ?>" method="post" class="form-validate form-horizontal well">
          Par :

          Code PHP:
              <form action="<?php if ($this->params->get('page_heading') == 'Url1-login')
                                  {
                                      echo 
          JRoute::_('http://url1.com');
                                  }
                                  elseif (
          $this->params->get('page_heading') == 'Url2-login')
                                  {
                                      echo 
          JRoute::_('http://url2.com'); 
                                  } 
                                  else
                                  {
                                      echo 
          JRoute::_('index.php?option=com_users&task=user.login'); 
                                  } 
                              
          ?>" method="post" class="form-validate form-horizontal well">

          Commentaire


          • #6
            Re : Menu type connexion qui renvoie sur une adresse externe

            Négatif.
            Je n'avais pas fait attention mais l'authentification n'a pas besoin d'être validée pour renvoyer sur la page.
            C'est à dire que même si les identifiants sont incorrects l'utilisateur est renvoyé sur la page externe.
            Il faut sans doute modifier le fichier à un autre endroit.

            Commentaire


            • #7
              Re : Menu type connexion qui renvoie sur une adresse externe

              Maintenant je me concentre sur l'input qui reprend le paramètre de redirection et l'encode, c'est probablement une meilleure piste :

              Code PHP:
              <input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_url'$this->form->getValue('return'))); ?>" />
              ...que j'ai remplacé par :

              Code PHP:
              <input type="hidden" name="return" value="<?php if ($this->params->get('page_heading') == 'Url1-login')
                                                              {
                                                                  echo 
              'url2.com';
                                                              }
                                                              elseif (
              $this->params->get('page_heading') == 'Url2-login')
                                                              {
                                                                  echo 
              'index.php'
                                                              } 
                                                              else
                                                              {
                                                                  
              base64_encode($this->params->get('login_redirect_url'$this->form->getValue('return'))); 
                                                              } 
                                                             
              ?>" />
              Le cas de l'index.php est pris en compte, donc apparemment les adresses externes sont bloquées à un autre endroit... peut-être dans l'input suivant qui contient aussi une valeur encodée.
              J'avoues que je ne sais pas trop où aller... et s'il est seulement possible de contourner ce filtre.

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X