GET qui s'empilent
- Accueil
- Forum
- Programmation
- PHP
- GET qui s'empilent
TheFlameflo Le 22 mai 2016 à 01:38 (Édité le 25 janvier 2019 à 17:51)
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 Le 22 mai 2016 à 15:48 (Édité le 1 janvier 1970 à 01:00)
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 "?") ;)