JeuWeb - Crée ton jeu par navigateur
Comment gérez-vous les & dans les url - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Comment gérez-vous les & dans les url (/showthread.php?tid=6080)

Pages : 1 2


Comment gérez-vous les & dans les url - php_addict - 15-04-2012

Bonsoir

Comment gérez-vous (encodez-vous) les & dans les url (ou comment vos framework gèrent cela)

exemple: monurl?php&param=123 est inexact il faut monurl?php&param=123

passez-vous vos url dans une moulinette, si oui avec quel type d'encodage?

Quel encodage est il le meilleur?

-> monurl?php&param=12 (encodage xhtml)
-> monurl%3Fphp%26param%3D123 (encodage selon la RFC 3986)

quel impact d'un point de vue SEO (Search Optimization Engine) ?

Bonne fin de week end...



RE: Comment gérez-vous les & dans les url - Argorate - 15-04-2012

Il y a http://php.net/manual/fr/function.htmlspecialchars.php ou un simple str_replace()...
Je ne vois pas bien le problème que tu as en fait? peux-tu reformuler?





RE: Comment gérez-vous les & dans les url - niahoo - 15-04-2012

Je ne crois pas que ce soit "inexact" comme tu dis, au contraire. Et si c'est le cas, tant pis, je ne me pose pas le prolème Smile

Ceci dit dans le code que je produis je ne m'en sert jamais. généralement ça sera monurl/php/123


RE: Comment gérez-vous les & dans les url - php_addict - 15-04-2012

(15-04-2012, 08:22 PM)niahoo a écrit : Je ne crois pas que ce soit "inexact" comme tu dis, au contraire.

le w3c dit
Citation :If you want to use a literal ampersand in your document you must encode it as "&" (even inside URLs!

ce n'est pas que je veuille faire un site conforme 100% au w3c mais dans la mesure du possible je préférerais (au moins pour ma home page)


RE: Comment gérez-vous les & dans les url - Sephi-Chan - 15-04-2012

Dans la majorité des cas, j'ai des URL propres. Sinon, Rails encode les URL pour moi.


link_to(@user.name, user_url(@user, foo: 'Foo & bar', bar: 'Bar & foo'))

Le code source généré est :

Citation :<a href="http://localhost:3000/users/1?bar=Bar+%26+foo&amp;foo=Foo+%26+bar">Foo</a>



En PHP from scratch, tu dois faire :


$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';



RE: Comment gérez-vous les & dans les url - niahoo - 15-04-2012

oui voila tu dois encoder tes '&' quand ils font partie des données que tu transmets, mais pas ceux qui servent à délimiter les champs qui font partie de la syntaxe.


RE: Comment gérez-vous les & dans les url - Sephi-Chan - 15-04-2012

En fait, tous les & doivent être encodés.
Ceux contenus dans les valeurs des paramètres doivent êtres URL encodés.
Ceux qui séparent ces paramètres doivent être encodés en entités HTML.


RE: Comment gérez-vous les & dans les url - niahoo - 16-04-2012

Bizzare, la pluspart des softs (y compris ce forum) ne prennent pas cette peine. bon ça marche quand même hein :]


RE: Comment gérez-vous les & dans les url - Sephi-Chan - 16-04-2012

Le second encodage est uniquement "cosmétique", pour être valide.


RE: Comment gérez-vous les & dans les url - php_addict - 16-04-2012

Merci pour vos avis,


je ne suis pas certain de comprendre 2 ou 3 trucs...

1) est ce que le séparateur '&' doit toujours être écrit '&amp;' même dans cet exemple suivant ou c'est juste pour l'affichage html?

Citation :<?php
// REDIRECTION

header('Status: 302 Moved Temporarily', false, 302);
header('Location: url.php?id=2&amp;param=12345');
exit();

?>

2) je viens d'apercevoir qu'il y a plusieurs séparateurs valides:

sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="

Y-a-t il une différence entre tout ces séparateurs?

3) donc faut que je passe toutes mes url dans une moulinette du genre ?:


function html_url($url)
{
$retour = $url['path'];
if(isset($url['params']))
{
if(is_array($url['params']))
{
if(!empty($url['params']))
{
$retour .= '?' . http_build_query($url['params'], '', '&amp;');
}
}
}
return($retour);
}

$url = array('path' => 'monurl.php' , 'params' => array('id' => 'mon_id' , 'param' => '1&2&3'));

echo html_url($url);