GET qui s'empilent

Suivre ce topic
Ce topic est suivi par : Personne...
Ce topic a été résolu
TheFlameflo

TheFlameflo Le 22 mai 2016 à 01:38 (Édité le 25 janvier 2019 à 17:51)

Salut !
J'ai créé un petit système en PHP qui me permet de créer des liens facilement.
Ça me permet que si j'appuie sur le lien, ça ne me redirige pas directement à la page d'accueil.
Voici mon code : 
<?php Page::link('Français', $params = array('lang'=>'fr')); ?></br>
<?php Page::link('English', $params = array('lang'=>'en'));?>
Et voici ma fonction (dans ma classe) :
static function link($content, $params = [])
   {
      $link = '<a href='.$_SERVER['REQUEST_URI'];
         if(isset($_GET['p']))
         {
            foreach ($params as $key => $value) 
            {
               $link .= '&';
               $link .= $key.'='.$value;
            }
         }
         else
         {
            if(!empty($params))
            {
               foreach ($params as $key => $value)
               {
                  if(!preg_match("#[?]#", $link))
                  {
                     $link .= '?';
                  }
                  else
                  {
                     $link .= '&';   
                  }
                  $link .= $key.'='.$value;
               }
            }
         }
         $link .= '>'. $content .'</a>';
      echo $link;
   }
Cependant, si je clique sur mon lien "Francais", ça me rajoute bien le paramètre dans l'URL et si j'appuie encore dessus ou sur une autre langue, le paramètre s'ajoute...

Savez-vous comment faire pour régler le problème ?

Merci d'avance !
PrimFX

PrimFX Le 22 mai 2016 à 15:48

Salut !
Les paramètres s'ajoutent car ta REQUEST_URI les contient déjà...Si tu n'as besoin de conserver aucun paramètre qui pourrait être présent dans l'URL, tu peux remplacer la ligne 3 de ta fonction par :
$link = '<a href='.strtok($_SERVER["REQUEST_URI"],'?');
Le strtok() te permettra justement de supprimer tous les paramètres de l'URL (en retournant la chaîne de caractère jusqu'à la première occurrence du "?") ;) 
TheFlameflo

TheFlameflo Le 22 mai 2016 à 17:22

Merci, c'est parfait !
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte