Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1690 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  "&" ou "&" dans une URL ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

"&" ou "&" dans une URL ?

n°1291190
krylon31
Posté le 24-01-2006 à 17:17:29  profilanswer
 

Bonjour,
 
Dans mes "href", j'écris :
 
"../dossier/nom_page.php?var1=aa&var2=bb"
 
cela marche sans problème sous IE et sous Firefox.
 
Quand je mets
 
"../dossier/nom_page.php?var1=aa&var2=bb"
 
cela marche sans problème sous IE mais plus sous Firefox.
 
Il me semblait que la norme W3C demandait "&" plutôt que "&".
 
Dans PHP.INI, j'ai
- "arg_separator.input" = "&"
- "arg_separator.output" = "&"
Je n'ai pas accès à PHP.INI facilement.
 
En furetant, j'ai trouvé que l'on pouvait les modifier par .htaccess mais je n'ai pas trouvé la formule magique = je n'ai pas très bien compris (pas du tout d'ailleurs) comment utiliser PHP_INI_PERDIR ou PHP_INI_ALL.
 
Mes questions :
1) - Vaut-il mieux "&" ou "&" ?
2) - Comment puis-je modifier mes arg_separator sans modifier PHP.INI ?
3) - Quelle est la différence entre les deux ?
4) - Comment marche PHP_INI_PERDIR ?
 
Merci, merci.
 
 

mood
Publicité
Posté le 24-01-2006 à 17:17:29  profilanswer
 

n°1291282
h4rold
Posté le 24-01-2006 à 19:24:09  profilanswer
 

& marche partout depuis plusieurs années. Si le W3c veux changer, il le feront mais ca prendra du temp donc on y est pas.
Mon conseil : utilise & :d

n°1291541
Dj YeLL
$question = $to_be || !$to_be;
Posté le 24-01-2006 à 23:05:36  profilanswer
 

:??:
 
J'utilise toujours & et j'utilise Firefox depuis des années, ça marche très bien.
 
De toute façon & est une entité qui existe depuis toujours, et je doute que FF puisse ne pas être compatible


---------------
Gamertag: CoteBlack YeLL
n°1291553
omega2
Posté le 24-01-2006 à 23:20:43  profilanswer
 

h4rold a écrit :

& marche partout depuis plusieurs années. Si le W3c veux changer, il le feront mais ca prendra du temp donc on y est pas.
Mon conseil : utilise & :d

Au contraire on y est déjà à fond au moins depuis la premiére mouture de ce qui est devenu la norme XHTML1.0 . Le W3C a changer d'avis là dessus depuis au moins cette époque là.
En xhtml, le caractére "&" définis un début d'entité constitué de l'ensemble des caractéres jusqu'au ";" suivant. Le & n'est pas un caractére comme les autres, c'est un caractére spécial qui a une signification propre au même titre que les caractéres < et >. (début et fin de balise)
Certe il a fallut attendre le xhtml pour voir apparaitre le "&amp;" directement dans les adresses mais l'entité "&amp;" existe depuis bien plus de 10 ans.
 
 
Ce qui faut retenir : en html, la norme dit que le caractére "&" est utilisable seul dans les adresses. Avec les navigateurs récents, le "&amp;" marche tout aussi bien.
En xhtml, le caractére "&" tout seul est interdit où qu'il soit même dans les adresses. La seule exception à cette régle est du aux régles du xml : dans une zone "CDATA", tous les caractéres sont des caractéres normaux, il faut donc y mettre un "&" simple et non pas un "&amp;". Jusqu'a présent, je n'ai pas vu la moindre source de page xhtml contenant des zones "CDATA".
 
Le seul cas que je conais où le &amp; posait probléme dans une adresse, ca a été pour un header "refresh" et une balise "refresh" mais ce n'était pas du au &amp;, c'était du à un non respect des régles d'écriture de ces éléments là.

n°1310784
krylon31
Posté le 21-02-2006 à 16:13:41  profilanswer
 

Bon, je n'ai pas résolu mon problème.
Par contre, j'ai remarqué que les URL d'autres sites ne contiennent pas
" & a m p ; " mais " & " tout seul.
 
Sur ce site même je ne vois que des & simples.
Dans l'annonce Google les variables sont séparées par des & simples.
Est-ce qu'il y a une indication à donner dans le code que j'oublie ?
Peut-être dans les metas, les content ?
 
Merci.

n°1310950
nargy
Posté le 21-02-2006 à 19:40:23  profilanswer
 


1- W3C indique que utiliser & peut introduire des ambiguïtés dans les noms de variables. Par ex:
variable: separateur
valeure: ;
donne &separateur=;
est ambigü. La plupart du temps ces ambiguïtées sont levées par le navigateur qui ne trouve pas l entité dans ses tables.
 
2- une tartine tombe toujours du côté beurré, j utilise donc toujours htmlentities().
 
 

n°1311362
omega2
Posté le 22-02-2006 à 12:10:11  profilanswer
 

nargy > Si c'est pour mettre des valeurs dans les url, il vaut mieux utiliser "urlencode()" que "htmlentities()". La premiére est faite justement pour noter des adresses alors que la seconde est faite pour afficher du texte dans un navigateurs en étant sur que les caractéres spéciaux s'afficheront bien et que le navigateur ne traite pas une partie de cette chaine comme étant une balise html standard.

n°1311581
nargy
Posté le 22-02-2006 à 15:51:46  profilanswer
 

omega2> théoriquement il faut les deux.
- pour les variables, les valeures, les répertoire, les noms de fichiers (...) il faut utiliser urlencode()
- pour mettre l url dans un href il faut htmlentities()
exemple:

Code :
  1. htmlentities(
  2. 'http://mon.site/'
  3.   .urlencode($repertoire.'/'.$fichier)
  4.   .'?'.urlencode($variable1).'='.urlencode(valeur1)
  5.   .'&'.urlencode($variable1).'='.urlencode(valeur1)
  6.   .'#'.urlencode($ancre)
  7. )


 

n°1311611
omega2
Posté le 22-02-2006 à 16:15:42  profilanswer
 

C'est bien ce que je disais. PAr contre, dans ton message précédant, tu laissais entendre que t'utilisais htmlentites également pour les URL ce qui aurait été une erreur.

n°1311670
krylon31
Posté le 22-02-2006 à 17:09:03  profilanswer
 

Je me suis rendue compte que mes url étaient appelées par deux types de fonctions :
Des fonctions utilisant du JS et des autres non.
Ce sont celles qui utilisent le JS qui m'analysent mal les &  a m p;
J'en suis à chercher sur window.location (par exemple) et firefox.
J'ai mis des messages dans la partie Javascript.


Message édité par krylon31 le 27-02-2006 à 08:18:13
mood
Publicité
Posté le 22-02-2006 à 17:09:03  profilanswer
 

n°1313342
newneo2001
Posté le 24-02-2006 à 23:18:00  profilanswer
 

ini_set("url_rewriter.tags","" ); // pour la validation XHTML
 
en début de tes pages et tes & seront convertit et tes liens valides XHTML.

n°1314019
krylon31
Posté le 27-02-2006 à 09:08:12  profilanswer
 

Résultat du WE.
Je relis le code mis par nargy :
.......................
htmlentities('http://mon.site/'  .urlencode($repertoire.'/'.$fichier)  .'?'.urlencode($variable1).'='.urlencode(valeur1)  .'&'.urlencode($variable1).'='.urlencode(valeur1)  .'#'.urlencode($ancre))
.......................
 
Je me rends compte qu'il met des "&" là où je mets des "&amp;" :
......................
htmlentities('http://mon.site/'  .urlencode($repertoire.'/'.$fichier)  .'?'.urlencode($variable1).'='.urlencode(valeur1)  .'&amp;'.urlencode($variable1).'='.urlencode(valeur1)  .'#'.urlencode($ancre))  
.......................
 
Sur Nexen, je retrouve la même chose :
........................
//$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
//echo '<a href="moncgi?' . htmlentities($query_string) . '">';
........................
 
Finalement, est-ce que je ne m'acharne pas à vouloir mettre des "&amp;" au mauvais endroit ?
Je relis mes messages et je me rends compte que je n'ai pas bien précisé où mes "&amp;" ne passent pas.
 
 
 
 
Si j'écris :
........................
$link="creannot.php?".utf8_encode("zaza=l&amp;ulu&id=$id" );
........................
 
je n'ai effectivement aucun problème alors qu'avec  
........................
$link="creannot.php?".utf8_encode("zaza=l&amp;ulu&amp;id=$id" );
........................
Rien ne va plus !!!
 


Message édité par krylon31 le 27-02-2006 à 09:14:07
n°1314636
newneo2001
Posté le 27-02-2006 à 17:49:29  profilanswer
 

Mais si on te donne des réponses, il faut que ca serve à qqch sinon on perd pas notre temps.
 
As tu essayé ?
 
ini_set("url_rewriter.tags","" ); // pour la validation XHTML  
 
C'est ce que j'utilise sur tous mes scripts et tous sont compatibles CSS 2.0 et XHTML 1.0 strict

n°1314693
krylon31
Posté le 27-02-2006 à 18:49:08  profilanswer
 

newneo2001 > oui j'ai bien ini_set("url_rewriter.tags","" );


Message édité par krylon31 le 27-02-2006 à 18:51:31

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  "&" ou "&amp;" dans une URL ?

 

Sujets relatifs
URL Rewrinting spécifique a une page...[URL Rewriting] Problème de .htaccess sous Apache 2 ...
[ASP] Url RewritingSession, cookie ou URL, demande de conseil
Afficher normalement caractères spéciaux d'une URL ("%C3%A9 --> "é")URL Rewriting Passer des variables dans l'url
PHP Récupération d'une variable de l'URL[URL Rewriting], help please !
[Débutant] URL+POST ou GETFopen pour un URL
Plus de sujets relatifs à : "&" ou "&amp;" dans une URL ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR