Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lien avec passage de parametre url plus ancre

2 réponses
Avatar
Dominique Ottello
Bonjour,

Certaines pages php de mon site peuvent être appelées depuis plusieurs
autres pages et, afin de pouvoir revenir à la page d'appel, celle-ci est
passée en paramètre (méthode GET) à la suite de l'url comme ci-dessous :

echo "<a href=\"calc_temp.php?retour=thermo00.php\">Température à partir
de la tension</a>\n";

Et, dans la page appelée, je récupère la page de retour par :

if (empty($_GET['retour'])) $retour="thermo00.php";
else $retour=$_GET['retour'];

avec écriture du lien de retour par :

echo "<a href=\"".$retour."\"><img src=\"images/ancient_retour.gif\"
alt=\"Précédent\" class=\"up\"></a>\n";

Jusque là, pas de problèmes, ça fonctionne à priori correctement sous
Mozilla 1.7.3, Opera 7.23 et IE6.

Un (petit) problème se pose lorsque le lien de retour doit être effectué
à un endroit précis (ancre) de la page et, après quelques temps de
"galère", j'ai appliqué la solution suivante en utilisant urlencode,
uniquement dans le lien de la page d'appel, sans rien changer dans la
page appelée :

echo "<a
href=\"calc_temp.php?retour=thermo04.php".urlencode("#calculer")."\">Calculer
les températures à partir d'une tension</a>\n";

Là aussi, à priori, ça fonctionne correctement, mais est-ce la bonne
méthode ?

J'ai bien essayé d'encoder l'url complète :

echo "<a
href=\"".urlencode("calc_mv.php?retour=thermo04.php#calculer")."\">Calculer
les tensions à partir d'une température</a></p>\n";

mais, en local avec EasyPHP, ça me donne une erreur d'accès, dès le
début, donc sans doute sur le $_GET :

Forbidden
You don't have permission to access
/aviatechno/thermo/calc_mv.php?retour=thermo04.php#calculer on this
server.

Quelle pourrait-être la bonne méthode ?

Merci.
--
= Dominique Ottello = http://www.ottello.net
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant

--

2 réponses

Avatar
Olivier Miakinen

echo "<a
href="calc_temp.php?retour=thermo04.php".urlencode("#calculer")."">Calculer
les températures à partir d'une tension</a>n";

Là aussi, à priori, ça fonctionne correctement, mais est-ce la bonne
méthode ?


Tout d'abord, si c'est vraiment "#calculer" ton ancre, et pas une ancre
calculée du style de "#$calculer", alors tu n'as pas besoin d'urlencode.
De même si le contenu de $calculer ne comporte que des lettres ou des
chiffres.

Bon, je vais supposer que tu voulais "$calculer" et qu'il peut y avoir
des minuscules accentuées par exemple. Voici un code équivalent au tien,
quoique je l'aie réécrit d'une façon que je trouve plus lisible.

echo "<a href='calc_temp.php?retour=thermo04.php"
. urlencode("#$calculer")
. "'>Calculer les températures à partir d'une tension</a>n";

Pour ne pas encoder le '#', il vaudrait mieux ceci :

echo "<a href='calc_temp.php?retour=thermo04.php#"
. urlencode("$calculer")
. "'>Calculer les températures à partir d'une tension</a>n";

Voire :

echo "<a href='calc_temp.php?retour=thermo04.php#"
. urlencode($calculer)
. "'>Calculer les températures à partir d'une tension</a>n";

J'ai bien essayé d'encoder l'url complète :

echo "<a
href="".urlencode("calc_mv.php?retour=thermo04.php#calculer")."">Calculer
les tensions à partir d'une température</a></p>n";


Alors là, c'est pire. Non seulement tu encodes le #, mais aussi le point
d'interrogation et le signe égal. Il va alors chercher une page
"calc_mv.php%3Fretour%3Dthermo04.php%23calculer" que, bien sûr, il ne
trouvera pas.

Quelle pourrait-être la bonne méthode ?


Voir plus haut.

--
Olivier Miakinen
À Bruxelles, vous avez vu le Miakinen Pis ?

--

Avatar
Dominique Ottello
Olivier Miakinen <om+ écrivait :

Tout d'abord, si c'est vraiment "#calculer" ton ancre, et pas une ancre
calculée du style de "#$calculer", alors tu n'as pas besoin d'urlencode.
De même si le contenu de $calculer ne comporte que des lettres ou des
chiffres.


Dans ce cas précis, mon ancre n'est pas une variable mais bien du texte
pur : echo "<a name="calculer">n";

Je viens de faire l'essai, sans utiliser urlencode() comme précisé dans
ta réponse ci-dessus :

echo "<a href="calc_mv.php?retour=thermo04.php#calculer">Calculer les
tensions à partir d'une température</a>n";

et ça fonctionne correctement.

Mes moments de "galère" devaient provenir d'une autre erreur qui a été
incidemment corrigée.

Merci pour toutes ces explications.
--
= Dominique Ottello = http://www.ottello.net
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant

--