Abouter une variable à une url pour la récupérer dans la page appelée, suite

Le
Le Retour
Bonsoir aux uns, bonjour aux autres,

Merci pour toutes les réponses concernant la manière de récupérer une
variable aboutée à une URL par un #, ce qui s'avère impossible en php. Je
n'ai pas su exploiter la technique javascript, dont je ne suis pas très
familier, mais ayant trouvé une astuce qui peut en intéresser certains, je
la communique ici:
J'aboute donc ma variable à l'URL par un ? comme suggéré par db,
l'enregistre en session dans la page appelée et la réexpédie par un header
vers le script de destination; ainsi ma variable n'apparait pas dans l'url
de la page ouverte.

Thierry
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #766636

Merci pour toutes les réponses concernant la manière de récupérer une
variable aboutée à une URL par un #, ce qui s'avère impossible en php. Je
n'ai pas su exploiter la technique javascript, dont je ne suis pas très
familier, mais ayant trouvé une astuce qui peut en intéresser certains, je
la communique ici:
J'aboute donc ma variable à l'URL par un ? comme suggéré par db,
l'enregistre en session dans la page appelée et la réexpédie par un header
vers le script de destination; ainsi ma variable n'apparait pas dans l'url
de la page ouverte.


Ce faisant, tu vas à l'encontre de la logique habituelle selon laquelle
se déplacer au sein d'une page (que ce soit avec les flèches, la souris,
ou en suivant une ancre interne #xxx) ne devrait pas générer une requête
différente vers le serveur.

C'est ton site et tu y fais ce que tu veux, mais par curiosité j'ai-
merais bien savoir pourquoi tu as ressenti le besoin de faire ça.

davel_x
Le #766635
C'est ton site et tu y fais ce que tu veux, mais par curiosité
j'ai-merais bien savoir pourquoi tu as ressenti le besoin de faire ça.

Je me sers aussi de cette technique (c'est moche) notamment avec

SWFAddress navigation du navigateur dans les animations Flash, couplé à des
fonctions qui aident ce qu'on appelle la SEO (Search Engine
Optimisation). Cela permet à la fois d'accèder directement à une partie
d'une anim Flash sans se retaper tout le parcours (et au passage de
pouvoir filer à un pote le lien direct vers une information), tout en
assurant un contenu alternatif pour au choix les moteurs de recherche,
les mal-voyants, etc.

Il aurait été plus simple de pouvoir récupérer ce qui se trouve après le
# en PHP mais si on y réfléchi bien, il est normal que ce soit
impossible, alors autant utiliser des moyens alambiqués pour arriver à
une certaine fin. :)

--
**davel**
http://www.davel.fr/blog/

Olivier Miakinen
Le #766634

C'est ton site et tu y fais ce que tu veux, mais par curiosité
j'ai-merais bien savoir pourquoi tu as ressenti le besoin de faire ça.



Tiens ? Par curiosité également, j'aimerais bien savoir pourquoi ma
question a été reformatée. C'est ton Thunderbird qui a décidé ça tout
seul ou bien tu l'y as incité ?

Je me sers aussi de cette technique (c'est moche) notamment avec
SWFAddress navigation du navigateur dans les animations Flash, couplé à des
fonctions qui aident ce qu'on appelle la SEO (Search Engine
Optimisation). [...]


Merci de ta réponse claire et précise.


Le Retour
Le #770843
Donc....,
encore débutant et autodidacte, j'ai recherché un moyen permettant, en
cliquant sur un lien, en l'occurence une catégorie, d'exécuter une requête
dans une bdd, ie extraire toutes les entrées correspondant à la catégorie
cliquée. Il m'a semblé, si j'aboutais ma variable à l'URL par un ?, que ça
ouvrirait une porte à de possibles injections SQL. Je n'ai pas trouvé mieux
pour contourner ce risque, mais si on m'explique, je peux être encore
preneur...

Thierry

"Olivier Miakinen" news:472e6178$

Merci pour toutes les réponses concernant la manière de récupérer une
variable aboutée à une URL par un #, ce qui s'avère impossible en php.
Je


n'ai pas su exploiter la technique javascript, dont je ne suis pas très
familier, mais ayant trouvé une astuce qui peut en intéresser certains,
je


la communique ici:
J'aboute donc ma variable à l'URL par un ? comme suggéré par db,
l'enregistre en session dans la page appelée et la réexpédie par un
header


vers le script de destination; ainsi ma variable n'apparait pas dans
l'url


de la page ouverte.


Ce faisant, tu vas à l'encontre de la logique habituelle selon laquelle
se déplacer au sein d'une page (que ce soit avec les flèches, la souris,
ou en suivant une ancre interne #xxx) ne devrait pas générer une requête
différente vers le serveur.

C'est ton site et tu y fais ce que tu veux, mais par curiosité j'ai-
merais bien savoir pourquoi tu as ressenti le besoin de faire ça.



newdb
Le #770841
davel_x
Il aurait été plus simple de pouvoir récupérer ce qui se trouve après le
# en PHP mais si on y réfléchi bien, il est normal que ce soit
impossible,...


si je regarde :
(commentaires de kjensen_at_nospam_dot_iaff106_dot_com en bas de page)

<?php

function ParseURLplus($url) {
$URLpcs = (parse_url($url));
$PathPcs = explode("/", $URLpcs['path']);
$URLpcs['file'] = end($PathPcs);
unset($PathPcs[key($PathPcs)]);
$URLpcs['dir'] = implode("/", $PathPcs);
return ($URLpcs);
}

$url1 = 'http://www.example.com/path/dir/file.php?arg=val#anchor';
$URL1pcs = ParseURLplus($url1);
print_r($URL1pcs);

/*
Array(
[scheme] => http
[host] => www.example.com
[path] => /path/dir/file.php
[query] => arg=val
[fragment] => anchor
[file] => file.php
[dir] => /path/dir
)
*/

$url2 = 'https://name:/dir/file.php?arg=val#anchor';
$URL2pcs = ParseURLplus($url2);
print_r($URL2pcs);

/*
Array(
[scheme] => https
[host] => www.example.com
[user] => name
[pass] => pass
[path] => /dir/file.php
[query] => arg=val
[fragment] => anchor
[file] => file.php
[dir] => /dir
)
*/

?>

ça le fait non ?


--
@@@@@
E -00 comme on est very beaux dis !
' `) /
|_ =="

Mickaël Wolff
Le #770840
davel_x
Il aurait été plus simple de pouvoir récupérer ce qui se trouve après le
# en PHP mais si on y réfléchi bien, il est normal que ce soit
impossible,...


si je regarde :


[snip]

ça le fait non ?


Non. Tu n'as pas compris le problème de notre ami. Ce qu'il voulait,
c'était traiter l'identifiant (car bon, on va arrêter de parler
d'anchor... alors que c'est clairement un attribut ID qui est à
spécifier derrière #) côté client. Mais il n'est pas transmis par le
client Web, et ne peut donc être exploité côté serveur.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org


Olivier Miakinen
Le #770839

Ce faisant, tu vas à l'encontre de la logique habituelle selon laquelle
se déplacer au sein d'une page (que ce soit avec les flèches, la souris,
ou en suivant une ancre interne #xxx) ne devrait pas générer une requête
différente vers le serveur.

C'est ton site et tu y fais ce que tu veux, mais par curiosité j'ai-
merais bien savoir pourquoi tu as ressenti le besoin de faire ça.



Le 06/11/2007 00:27, Le Retour m'a répondu :
Donc....,
encore débutant et autodidacte, j'ai recherché un moyen permettant, en
cliquant sur un lien, en l'occurence une catégorie, d'exécuter une requête
dans une bdd, ie extraire toutes les entrées correspondant à la catégorie
cliquée.


D'accord. Tu veux donc faire des requêtes différentes selon la catégorie
choisie.

Il m'a semblé, si j'aboutais ma variable à l'URL par un ?, que ça
ouvrirait une porte à de possibles injections SQL.


À partir du moment où le paramètre est transmis au serveur, en quoi
utiliser un « # » au lieu d'un « ? » pourrait-il changer quoi que ce
soit à la possibilité d'injections SQL ?

Je n'ai pas trouvé mieux pour contourner ce risque, mais si on
m'explique, je peux être encore preneur...


Ben non, ça ne contournerait rien du tout. En revanche, vérifier
soigneusement les données qui te viennent de l'extérieur est en
principe nécessaire ET SUFFISANT si tu fais correctement ce contrôle.

Par exemple, si tu n'as que trois rubriques qui sont "truc", "chose"
et "bidule", il suffit de refuser tout ce qui n'est pas l'une de ces
trois là :

switch($_REQUEST['rubrique']) {
case 'truc':
case 'chose':
case 'bidule':
/* C'est parfait, on continue */
break;
default:
die("Désolé, requête mal formée");
}

Avec ça, aucun risque d'injections. Mais nous sommes devenus
parfaitement hors charte ici : va voir du côté du groupe de
discussions fr.comp.lang.php si tu as d'autres questions.

[ citation intégrale ]


Mihamina t'a déjà renvoyé vers la doc expliquant la façon habituelle de
citer. Mais je te suggère en outre d'installer OE QuoteFix pour corriger
certains bugs de ton Outlook Express, en particulier l'alternance de
lignes citées et de lignes « nues ».

http://www.aminautes.org/forums/configurer/oe/QF_doc.html


Le Retour
Le #770107
"Olivier Miakinen" news:47303eda$

Ce faisant, tu vas à l'encontre de la logique habituelle selon
laquelle



se déplacer au sein d'une page (que ce soit avec les flèches, la
souris,



ou en suivant une ancre interne #xxx) ne devrait pas générer une
requête



différente vers le serveur.

C'est ton site et tu y fais ce que tu veux, mais par curiosité j'ai-
merais bien savoir pourquoi tu as ressenti le besoin de faire ça.



Le 06/11/2007 00:27, Le Retour m'a répondu :
Donc....,
encore débutant et autodidacte, j'ai recherché un moyen permettant, en
cliquant sur un lien, en l'occurence une catégorie, d'exécuter une
requête


dans une bdd, ie extraire toutes les entrées correspondant à la
catégorie


cliquée.


D'accord. Tu veux donc faire des requêtes différentes selon la catégorie
choisie.

Il m'a semblé, si j'aboutais ma variable à l'URL par un ?, que ça
ouvrirait une porte à de possibles injections SQL.


À partir du moment où le paramètre est transmis au serveur, en quoi
utiliser un « # » au lieu d'un « ? » pourrait-il changer quoi que ce
soit à la possibilité d'injections SQL ?

Je n'ai pas trouvé mieux pour contourner ce risque, mais si on
m'explique, je peux être encore preneur...


Ben non, ça ne contournerait rien du tout. En revanche, vérifier
soigneusement les données qui te viennent de l'extérieur est en
principe nécessaire ET SUFFISANT si tu fais correctement ce contrôle.

Par exemple, si tu n'as que trois rubriques qui sont "truc", "chose"
et "bidule", il suffit de refuser tout ce qui n'est pas l'une de ces
trois là :

switch($_REQUEST['rubrique']) {
case 'truc':
case 'chose':
case 'bidule':
/* C'est parfait, on continue */
break;
default:
die("Désolé, requête mal formée");
}

Avec ça, aucun risque d'injections. Mais nous sommes devenus
parfaitement hors charte ici : va voir du côté du groupe de
discussions fr.comp.lang.php si tu as d'autres questions.

C'est effectivement beaucoup mieux comme ça...

Merci!

[ citation intégrale ]


Mihamina t'a déjà renvoyé vers la doc expliquant la façon habituelle de
citer. Mais je te suggère en outre d'installer OE QuoteFix pour corriger
certains bugs de ton Outlook Express, en particulier l'alternance de
lignes citées et de lignes « nues ».

http://www.aminautes.org/forums/configurer/oe/QF_doc.html




Olivier Miakinen
Le #770106
[ citation intégrale(¹) mal formatée(²) ]

C'est effectivement beaucoup mieux comme ça...
Merci!


De rien, mais à ton tour merci de faire l'effort de répondre de façon
plus concise(¹) et plus lisible(²) :
(¹) http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
(²) http://www.aminautes.org/forums/configurer/oe/QF_doc.html

Publicité
Poster une réponse
Anonyme