Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Validator et &

0 views
Skip to first unread message

Denis Beauregard

unread,
Feb 8, 2010, 8:41:37 AM2/8/10
to
Bonjour,

J'essaie de valider du code g�n�r� avec du PHP avec validator.w3.org
et j'ai quelques probl�mes avec les &.

Si mon code produit ceci :

<a href="fiche.php?op=af&no=641217" target="top">GRENIER, A</a>

validator croit que le &no est une entit� inconnue et donne un message
d'erreur.

>general entity "no" not defined and no default entity

J'ai donc remplac� le & par %26 et si je place la souris sur le
lien, je vois la m�me URL fiche.php?op=af&no=641217 dans la barre
en bas de la page.

Mais si je suis ce lien, cela ne fonctionne plus ! L'URL de la ligne
d'adresse est celle g�n�r�e en PHP,
http://site.com/fiche.php?op=af%26no=641217 et la fiche demand�e
n'appara�t plus. Je pensais que PHP transformerait le %26 en & de
fa�on transparente.

Ce cas est tellement commun que je ne vois pas pourquoi � la fois
validator et PHP ont des demandes oppos�es.

Je peux toujours ramener le & dans le code, mais j'aurais voulu
avoir une page sans erreur.


Denis

Olivier Miakinen

unread,
Feb 8, 2010, 8:50:46 AM2/8/10
to
Le 08/02/2010 14:41, Denis Beauregard a ï¿œcrit :
>
> J'essaie de valider du code gᅵnᅵrᅵ avec du PHP avec validator.w3.org
> et j'ai quelques problï¿œmes avec les &.

>
> Si mon code produit ceci :
>
> <a href="fiche.php?op=af&no=641217" target="top">GRENIER, A</a>

Si ton code produit ceci, il est incorrect. Tu dois utiliser l'entitᅵ
&amp; ou l'un des ᅵquivalents &38; ou &#x26; ᅵ la place.

> J'ai donc remplacᅵ le & par %26 et si je place la souris sur le
> lien, je vois la mï¿œme URL fiche.php?op=af&no=641217 dans la barre


> en bas de la page.

Mauvaise idï¿œe. Au lieu de prendre la sï¿œquence d'ï¿œchappement HTML, pour
que le &amp; soit correctement transformᅵ en le caractᅵre & qui a un
sens spï¿œcial dans une URL, tu as pris la sï¿œquence d'ï¿œchappement pour les
URL, lui faisant donc perdre son sens spï¿œcial.

> Ce cas est tellement commun que je ne vois pas pourquoi ᅵ la fois
> validator et PHP ont des demandes opposï¿œes.

Ce cas est vraiment commun, en effet, et PHP n'a rien ᅵ y voir. Il
faut juste distinguer les sï¿œquences d'ï¿œchappement HTML des sï¿œquences
d'ï¿œchappement d'URL.

Cordialement,
--
Olivier Miakinen

Olivier Miakinen

unread,
Feb 8, 2010, 8:56:49 AM2/8/10
to
Le 08/02/2010 14:50, je rᅵpondais ᅵ Denis Beauregard :

>>
>> Si mon code produit ceci :
>> <a href="fiche.php?op=af&no=641217" target="top">GRENIER, A</a>
>
> Si ton code produit ceci, il est incorrect. Tu dois utiliser l'entitᅵ
> &amp; ou l'un des ᅵquivalents &38; ou &#x26; ᅵ la place.

<cit. http://www.la-grange.net/w3c/html4.01/charset.html#h-5.3.2>
Quatre rï¿œfï¿œrences d'entitï¿œs de caractï¿œres mï¿œritent une attention
particuliï¿œre car elles sont frï¿œquemment utilisï¿œes pour masquer certains
caractï¿œres spï¿œciaux.

* ᅵ &lt; ᅵ reprᅵsente le caractᅵre ᅵ < ᅵ ;
* ᅵ &gt; ᅵ reprᅵsente le caractᅵre ᅵ > ᅵ ;
* ᅵ &amp; ᅵ reprᅵsente le caractᅵre ᅵ & ᅵ ;
* ᅵ &quot; ᅵ reprᅵsente le caractᅵre ᅵ " ᅵ.
</cit.>

Olivier Miakinen

unread,
Feb 8, 2010, 9:00:54 AM2/8/10
to
[Dᅵsolᅵ pour le triple envoi, la prochaine fois j'essaierai de
rassembler toutes mes idï¿œes avant de faire un article unique.]

Le 08/02/2010 14:50, je rᅵpondais ᅵ Denis Beauregard :
>

>> Ce cas est tellement commun que je ne vois pas pourquoi ᅵ la fois
>> validator et PHP ont des demandes opposï¿œes.
>
> Ce cas est vraiment commun, en effet, et PHP n'a rien ᅵ y voir.

PHP n'est en rien responsable, mais en revanche, PHP peut t'aider :
<http://fr.php.net/manual/fr/function.htmlspecialchars.php>.

Denis Beauregard

unread,
Feb 8, 2010, 9:07:54 AM2/8/10
to
Le Mon, 08 Feb 2010 15:00:54 +0100, Olivier Miakinen
<om+...@miakinen.net> �crivait dans fr.comp.infosystemes.www.auteurs:

>[D�sol� pour le triple envoi, la prochaine fois j'essaierai de
>rassembler toutes mes id�es avant de faire un article unique.]
>
>Le 08/02/2010 14:50, je r�pondais � Denis Beauregard :
>>
>>> Ce cas est tellement commun que je ne vois pas pourquoi � la fois
>>> validator et PHP ont des demandes oppos�es.
>>
>> Ce cas est vraiment commun, en effet, et PHP n'a rien � y voir.


>
>PHP n'est en rien responsable, mais en revanche, PHP peut t'aider :
><http://fr.php.net/manual/fr/function.htmlspecialchars.php>.

Merci !

J'allais annuler mon message initial mais tu tires plus vite que
mon ombre...

J'ai relu plus attentivement le message d'erreur de validator et
ils donnent directement la solution. En gros, oui, c'est la faute
� PHP et la solution est aussi dans PHP, soit ajouter la ligne
suivante au d�but

ini_set('arg_separator.output','&amp;');

tout en utilisant cette entit� dans l'URL.

Je retourne � ma validation et cette fois, je lirai de plus pr�s
les fameux messages d'erreur...


Denis

Sergio

unread,
Feb 8, 2010, 9:39:03 AM2/8/10
to
Denis Beauregard a �crit :

> Bonjour,
>
> J'essaie de valider du code g�n�r� avec du PHP avec validator.w3.org
> et j'ai quelques probl�mes avec les &.
>
> Si mon code produit ceci :
>
> <a href="fiche.php?op=af&no=641217" target="top">GRENIER, A</a>
>
> validator croit que le &no est une entit� inconnue et donne un message
> d'erreur.
>
>> general entity "no" not defined and no default entity

Il faut remplacer le & par l'entit� &amp;

(et en passant target="_top" si tu veux sortir d'une frame)

Ta ligne :
<a href="fiche.php?op=af&amp;no=641217" target="_top">GRENIER, A</a>

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org

Olivier Miakinen

unread,
Feb 8, 2010, 9:45:12 AM2/8/10
to
Le 08/02/2010 15:07, Denis Beauregard a ï¿œcrit :

>
> J'allais annuler mon message initial mais tu tires plus vite que
> mon ombre...

:-D

> J'ai relu plus attentivement le message d'erreur de validator et
> ils donnent directement la solution. En gros, oui, c'est la faute

> ᅵ PHP et la solution est aussi dans PHP, soit ajouter la ligne
> suivante au dï¿œbut


>
> ini_set('arg_separator.output','&amp;');

Ah, tu n'avais pas prᅵcisᅵ qu'il s'agissait d'URL gᅵnᅵrᅵes
automatiquement par le mï¿œcanisme des sessions ! Dans ce cas, en
effet, il semble bien que ce soit de la faute de PHP.

Denis Beauregard

unread,
Feb 8, 2010, 10:00:14 AM2/8/10
to
Le Mon, 08 Feb 2010 15:45:12 +0100, Olivier Miakinen
<om+...@miakinen.net> �crivait dans fr.comp.infosystemes.www.auteurs:

>Le 08/02/2010 15:07, Denis Beauregard a �crit :


>>
>> J'allais annuler mon message initial mais tu tires plus vite que
>> mon ombre...
>
>:-D
>
>> J'ai relu plus attentivement le message d'erreur de validator et
>> ils donnent directement la solution. En gros, oui, c'est la faute

>> � PHP et la solution est aussi dans PHP, soit ajouter la ligne
>> suivante au d�but


>>
>> ini_set('arg_separator.output','&amp;');
>

>Ah, tu n'avais pas pr�cis� qu'il s'agissait d'URL g�n�r�es
>automatiquement par le m�canisme des sessions ! Dans ce cas, en


>effet, il semble bien que ce soit de la faute de PHP.

En fait, j'utilise une session dans le code, mais c'est une URL
que je g�n�rais � la main. La page de validator mentionne bien
que c'est une histoire de session, mais je ne vois pas comment
cela va influencer le code que je g�n�re directement � la main,
par un simple
echo '<a href="fiche.php?op=af&amp;no='.$line['fi'].'" target="top">

C'est bien moi qui envoie le code et non le m�canisme de session.

Ceci dit, mon code est maintenant 100% valide.


Denis

Denis Beauregard

unread,
Feb 8, 2010, 10:02:32 AM2/8/10
to
Le Mon, 08 Feb 2010 15:39:03 +0100, Sergio
<serge....@delbono.net.invalid> �crivait dans
fr.comp.infosystemes.www.auteurs:

>Denis Beauregard a �crit :
>> Bonjour,
>>
>> J'essaie de valider du code g�n�r� avec du PHP avec validator.w3.org
>> et j'ai quelques probl�mes avec les &.
>>
>> Si mon code produit ceci :
>>
>> <a href="fiche.php?op=af&no=641217" target="top">GRENIER, A</a>
>>
>> validator croit que le &no est une entit� inconnue et donne un message
>> d'erreur.
>>
>>> general entity "no" not defined and no default entity
>
>Il faut remplacer le & par l'entit� &amp;
>
>(et en passant target="_top" si tu veux sortir d'une frame)
>
>Ta ligne :
><a href="fiche.php?op=af&amp;no=641217" target="_top">GRENIER, A</a>

Je suppose que c'est mon navigateur qui ne voit pas la diff�rence,
mais top et _top donnent les m�mes r�sultats... Et de ce c�t�, il
me reste � trouver comment fermer la fen�tre ainsi cr��e (ou
l'onglet dans FF) avec un lien dans la page.


Denis

Denis Beauregard

unread,
Feb 8, 2010, 10:38:53 AM2/8/10
to
Le Mon, 08 Feb 2010 10:02:32 -0500, Denis Beauregard
<denis.b-at-franc...@nospam.com.invalid> �crivait dans
fr.comp.infosystemes.www.auteurs:

>Je suppose que c'est mon navigateur qui ne voit pas la diff�rence,
>mais top et _top donnent les m�mes r�sultats... Et de ce c�t�, il
>me reste � trouver comment fermer la fen�tre ainsi cr��e (ou
>l'onglet dans FF) avec un lien dans la page.

Oubliez ce dernier commentaire. J'ai trouv� :-)


Denis

Denis Beauregard

unread,
Feb 8, 2010, 11:37:31 AM2/8/10
to
Le Mon, 08 Feb 2010 15:39:03 +0100, Sergio
<serge....@delbono.net.invalid> �crivait dans
fr.comp.infosystemes.www.auteurs:

>Denis Beauregard a �crit :


>> Bonjour,
>>
>> J'essaie de valider du code g�n�r� avec du PHP avec validator.w3.org
>> et j'ai quelques probl�mes avec les &.
>>
>> Si mon code produit ceci :
>>
>> <a href="fiche.php?op=af&no=641217" target="top">GRENIER, A</a>
>>
>> validator croit que le &no est une entit� inconnue et donne un message
>> d'erreur.
>>
>>> general entity "no" not defined and no default entity
>
>Il faut remplacer le & par l'entit� &amp;
>
>(et en passant target="_top" si tu veux sortir d'une frame)
>
>Ta ligne :
><a href="fiche.php?op=af&amp;no=641217" target="_top">GRENIER, A</a>

Est-ce une diff�rence entre Seamonkey et les autres ?

Chez moi, avec target="top", cela ouvre un autre onglet dans SM, mais
pas avec _top. Et par la suite, mon lien pour fermer ne marche pas
avec _top.

Il s'agit ici d'un nouvel URL par rapport � mes tests pr�c�dents.
Chez moi, avec Easyphp, cela fonctionnait avec _top, mais avec un
onglet d�j� cr��. De m�me, dans l'adresse publique utilis�e pour
tester le code avec validator, l'onglet �tait d�j� ouvert. Je viens
de recommencer avec une autre URL, celle pour les tests par des
usagers, apr�s avoir ferm� le navigateur et ouvert une session en
utilisant un mot de passe, donc dans ces conditions un peu
diff�rentes, _top n'ouvrait pas de nouvel onglet, alors que top le
faisait.

Je pr�cise que j'avais trouv� "top" en faisant une recherche mais que
dans ma m�moire, c'�tait _top. Faut-il avoir les deux et si oui,
comment ?


Denis

Sergio

unread,
Feb 8, 2010, 12:14:43 PM2/8/10
to
Denis Beauregard a �crit :

> Le Mon, 08 Feb 2010 15:39:03 +0100, Sergio
> <serge....@delbono.net.invalid> �crivait dans
> fr.comp.infosystemes.www.auteurs:
>
>> Denis Beauregard a �crit :
>>> Bonjour,
>>>
>>> J'essaie de valider du code g�n�r� avec du PHP avec validator.w3.org
>>> et j'ai quelques probl�mes avec les &.
>>>
>>> Si mon code produit ceci :
>>>
>>> <a href="fiche.php?op=af&no=641217" target="top">GRENIER, A</a>
>>>
>>> validator croit que le &no est une entit� inconnue et donne un message
>>> d'erreur.
>>>
>>>> general entity "no" not defined and no default entity
>> Il faut remplacer le & par l'entit� &amp;
>>
>> (et en passant target="_top" si tu veux sortir d'une frame)
>>
>> Ta ligne :
>> <a href="fiche.php?op=af&amp;no=641217" target="_top">GRENIER, A</a>
>
> Est-ce une diff�rence entre Seamonkey et les autres ?
>
> Chez moi, avec target="top", cela ouvre un autre onglet dans SM, mais
> pas avec _top. Et par la suite, mon lien pour fermer ne marche pas
> avec _top.

D'apr�s la norme : (http://www.w3.org/TR/html401/present/frames.html#adef-target )
target="_top" : ouvre dans la fen�tre courante en occupant toute la fen�tre. Permet de "sortir" d'une frame.
target="xxxx" : Ouvre le lien dans la frame de nom xxxx. Si cette frame n'existe pas, le navigateur ouvre une nouvelle fen�tre, dont
la frame s'appelera "xxxx".

Les navigateurs � onglet, ouvrent en g�n�ral un nouvel onglet plut�t qu'une fen�tre.

Tu remarquera que si tu recliques dessus ton lien, il n'ouvrira pas un nouvel onglet, mais il ouvrira le lien dans l'onglet
pr�c�demment cr��.

Denis Beauregard

unread,
Feb 8, 2010, 12:32:36 PM2/8/10
to

Merci, je comprends mieux maintenant ce qui se passe. Cela fait
tellement longtemps que j'ai abandonn� les frames que je n'ai pas
cliqu� tout de suite sur ce qui se passait r�ellement. Je vois
aussi pourquoi ma fen�tre ne se fermait pas avec un _top.

Dans mon cas, chaque fen�tre correspond � une fiche d'information.
J'ai modifi� mon code pour avoir par exemple

<a href="fiche.php?op=af&amp;no=641217" target="t641217">GRENIER,
A</a>

et cela ouvre une fen�tre diff�rente pour chaque fiche, chacune avec
son lien "fermer la fen�tre". Je laisserai le client d�cider s'il
pr�f�re une seule fen�tre ou plusieurs.


Denis

Olivier Miakinen

unread,
Feb 8, 2010, 12:56:33 PM2/8/10
to
Le 08/02/2010 18:32, Denis Beauregard a ï¿œcrit :

>
> Merci, je comprends mieux maintenant ce qui se passe. Cela fait
> tellement longtemps que j'ai abandonnᅵ les frames [...]

C'est normal d'avoir abandonnᅵ les frames depuis si longtemps (depuis au
moins dix ans je dirais). Ce qui me semble beaucoup moins normal, c'est
justement de les reprendre aujourd'hui :
<http://openweb.eu.org/articles/finir_cadres>.

> [...] Je laisserai le client dï¿œcider s'il
> prï¿œfï¿œre une seule fenï¿œtre ou plusieurs.

Tiens, tu peux mï¿œme lui laisser dï¿œcider dï¿œs maintenant, en lui apprenant
ᅵ choisir tout seul entre rester dans la mᅵme fenᅵtre ou en ouvrir une
nouvelle : <http://www.miakinen.net/vrac/fenetre>.

Sergio

unread,
Feb 8, 2010, 1:15:39 PM2/8/10
to
Denis Beauregard a �crit :

>> D'apr�s la norme : (http://www.w3.org/TR/html401/present/frames.html#adef-target )
>> target="_top" : ouvre dans la fen�tre courante en occupant toute la fen�tre. Permet de "sortir" d'une frame.
>> target="xxxx" : Ouvre le lien dans la frame de nom xxxx. Si cette frame n'existe pas, le navigateur ouvre une nouvelle fen�tre, dont
>> la frame s'appelera "xxxx".
>>
>> Les navigateurs � onglet, ouvrent en g�n�ral un nouvel onglet plut�t qu'une fen�tre.
>>
>> Tu remarquera que si tu recliques dessus ton lien, il n'ouvrira pas un nouvel onglet, mais il ouvrira le lien dans l'onglet
>> pr�c�demment cr��.
>
> Merci, je comprends mieux maintenant ce qui se passe. Cela fait
> tellement longtemps que j'ai abandonn� les frames que je n'ai pas
> cliqu� tout de suite sur ce qui se passait r�ellement. Je vois
> aussi pourquoi ma fen�tre ne se fermait pas avec un _top.
>
> Dans mon cas, chaque fen�tre correspond � une fiche d'information.
> J'ai modifi� mon code pour avoir par exemple
>
> <a href="fiche.php?op=af&amp;no=641217" target="t641217">GRENIER,
> A</a>
>
> et cela ouvre une fen�tre diff�rente pour chaque fiche, chacune avec
> son lien "fermer la fen�tre". Je laisserai le client d�cider s'il
> pr�f�re une seule fen�tre ou plusieurs.

Plus simple de mettre target="_blank" ? Non ?
http://www.w3.org/TR/html401/types.html#type-frame-target

Denis Beauregard

unread,
Feb 8, 2010, 1:41:51 PM2/8/10
to
Le Mon, 08 Feb 2010 19:15:39 +0100, Sergio
<serge....@delbono.net.invalid> �crivait dans
fr.comp.infosystemes.www.auteurs:

>Denis Beauregard a �crit :
>


>> <a href="fiche.php?op=af&amp;no=641217" target="t641217">GRENIER,
>> A</a>
>>
>> et cela ouvre une fen�tre diff�rente pour chaque fiche, chacune avec
>> son lien "fermer la fen�tre". Je laisserai le client d�cider s'il
>> pr�f�re une seule fen�tre ou plusieurs.
>
>Plus simple de mettre target="_blank" ? Non ?
>http://www.w3.org/TR/html401/types.html#type-frame-target

C'est probablement le mot-cl� que j'aurais d� mettre au tout d�but.
Mais si j'ai la possibilit� d'afficher plusieurs fiches, je pense
que certains clients vont appr�cier. Si le client veut une seule
fiche � la fois, j'irai avec le _blank.

Merci pour ce d�tail.


Denis

Denis Beauregard

unread,
Feb 8, 2010, 2:34:40 PM2/8/10
to
Le Mon, 08 Feb 2010 13:41:51 -0500, Denis Beauregard
<denis.b-at-franc...@nospam.com.invalid> �crivait dans
fr.comp.infosystemes.www.auteurs:

>Le Mon, 08 Feb 2010 19:15:39 +0100, Sergio

Finalement, le client pr�f�re une seule fen�tre. Chez moi, _blink
ouvre plusieurs fen�tres, alors j'ai cod� cela avec une seule
fen�tre, que j'ai appel�e "fenetre" !

<a href="fiche.php?op=af&amp;no=641217" target="fenetre">GRENIER,
A</a>


Denis

0 new messages