PB de compatibilité avec W3C

PB de compatibilité avec W3C - PHP - Programmation

Marsh Posté le 21-01-2004 à 16:26:34    

Salut,
j'essaie de faire un site qui soit validé par le W3C en XHTML.
mais j'ai quelques petit probleme qui me semblent assez grave, voila :

#  Note: The Validator XML support has some limitations.
# Line 2, column 1058: cannot generate system identifier for general entity "PHPSESSID"
# Line 2, column 1067: reference not terminated by REFC delimiter
# Line 2, column 1067: reference to external entity in attribute value
# Line 2, column 1162: reference not terminated by REFC delimiter
# Line 2, column 1162: reference to external entity in attribute value
# Line 2, column 1260: reference not terminated by REFC delimiter
# Line 2, column 1260: reference to external entity in attribute value
# Line 2, column 1372: reference not terminated by REFC delimiter
# Line 2, column 1372: reference to external entity in attribute value
# Line 2, column 1473: reference not terminated by REFC delimiter
# Line 2, column 1473: reference to external entity in attribute value
# Line 2, column 1582: reference not terminated by REFC delimiter
# Line 2, column 1582: reference to external entity in attribute value
# Line 2, column 1685: reference not terminated by REFC delimiter
# Line 2, column 1685: reference to external entity in attribute value
# Line 2, column 1784: reference not terminated by REFC delimiter
# Line 2, column 1784: reference to external entity in attribute value
# Line 2, column 1880: reference not terminated by REFC delimiter
# Line 2, column 1880: reference to external entity in attribute value
# Line 2, column 1986: reference not terminated by REFC delimiter
# Line 2, column 1986: reference to external entity in attribute value
# Line 2, column 2083: reference not terminated by REFC delimiter
# Line 2, column 2083: reference to external entity in attribute value


 
Je sais pas quoi faire, une idée ?


---------------
"Deux chose sont infinies, l'univers et la sotise humaine. Mais je ne suis pas sûr de ce j'affirme quant à l'univers." Albert Einstein
Reply

Marsh Posté le 21-01-2004 à 16:26:34   

Reply

Marsh Posté le 21-01-2004 à 18:14:07    

c'est jeopardy?

Reply

Marsh Posté le 21-01-2004 à 18:29:50    

:lol:
 
A part ça, tu peux choisir le séparateur dans la php.ini et mettre & si mes souvenirs sont bons.

Reply

Marsh Posté le 21-01-2004 à 18:31:15    

tous les & des URL en &
et avant le session_start :

Code :
  1. ini_set("arg_separator.output", "&" );


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-01-2004 à 21:13:30    

Grilled, mais je confirme ce qui viens d'être dis, j'ai eut le même problème, et la solution est bien le init_set


---------------
http://lan.team-azerty.com, LAN fun en Rhône-Alpes
Reply

Marsh Posté le 24-01-2004 à 18:33:36    

plus simple : mettre des & (qui represente le caractere & en decimal) a la place des & lorsque tu generes tes urls, ca passe innapercu et pas besoin du ini_set vu que tu utilises un vrai caractere.
 
Ca fait toujours un appel en moins ;-)

Reply

Marsh Posté le 24-01-2004 à 18:34:31    

Kahyman a écrit :

plus simple : mettre des & (qui represente le caractere & en decimal) a la place des & lorsque tu generes tes urls, ca passe innapercu et pas besoin du ini_set vu que tu utilises un vrai caractere.
 
Ca fait toujours un appel en moins ;-)


 
Il fallait lire & a la place du & (la preuve que ca marche bien :-D erf)


Message édité par Kahyman le 24-01-2004 à 18:35:19
Reply

Marsh Posté le 24-01-2004 à 20:11:22    

je vois pas en quoi ça dispense du ini_set :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 20:23:14    

antp a écrit :

je vois pas en quoi ça dispense du ini_set :??:


 
C'est un charactere...
 
Par defaut le separateur est & (je parle de php), seulement validator considere l'ampersand & comme le debut d'une entite sgml (qui doit se finir par un ;), ce qui pose probleme lors de la validation. Remplacer & par & fait ceci : tu met bel et bien un &, mais sous une autre représentation. Validator lit alors & qu'il considere comme une entite valide si tu as declare le bon encodage de ta page (fait partie de iso-tralala et de la pluspart des encodages) alors que l'on n'utilise pas d'entite en realite. De son cote le parser php ne voit pas de difference, pour lui & et & c'est kifkif alors que & non...
 
(& est une entite html pas un caractere)
 
Je te laisse essayer, mais ca marche (si tu utilises et declares le bon char encoding) :)
 
J'avais essaye aussi avec %36 mais la si ca passe validator, c'est le parser php qui perd les pedales.
 
Etant donne que je suis peut-etre polio (meme si mon explication tient la route) En tout cas chez moi ca marche : & ne passe pas, je n'utilise pas init_set mais des & et tout va bien.


Message édité par Kahyman le 24-01-2004 à 20:27:00
Reply

Marsh Posté le 24-01-2004 à 20:24:24    

chez moi & fonctionne sans problème, et php est prévu pour fonctionner avec. C'est ta config qui déconne.

Reply

Marsh Posté le 24-01-2004 à 20:24:24   

Reply

Marsh Posté le 24-01-2004 à 20:27:34    

gizmo a écrit :

chez moi & fonctionne sans problème, et php est prévu pour fonctionner avec. C'est ta config qui déconne.


 
tu utilises init_set ?
 
quand je dis que & ne passe pas c'est SANS init_set, avec tout va bien...


Message édité par Kahyman le 24-01-2004 à 20:28:26
Reply

Marsh Posté le 24-01-2004 à 20:30:37    

:??: heu le & est tout autant un & que le & pour du HTML.
Le parseur PHP il s'en fout que ce soit l'un ou l'autre il me semble. Et le validateur tout ce qu'il veut c'est qu'après un & il y ait un code valide.


Message édité par antp le 24-01-2004 à 20:30:45

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 20:32:24    

Sinon allez voir le anuel php sous init_set...
 
Puis editez la page et cherchez separator vous allez tomber sur... & et pas & Vous pouvez faire un init_set sur & mais autant utiliser &
 
;)


Message édité par Kahyman le 24-01-2004 à 20:41:15
Reply

Marsh Posté le 24-01-2004 à 20:36:14    

antp a écrit :

:??: heu le & est tout autant un & que le & pour du HTML.
Le parseur PHP il s'en fout que ce soit l'un ou l'autre il me semble. Et le validateur tout ce qu'il veut c'est qu'après un & il y ait un code valide.


 
Non le parser php ne s'ent fout pas : une uri n'est PAS du html.
 
Il ne decode donc pas l'uri comme du html. Ainsi, &, a moins que tu ne fasses un init_set, pour le parser c'est un & suivi d'une chaine de caracter donc c'st considere comme une nouvelle variable.  
 
& et & c'est le meme caractere par contre, pas du html, c'est l'utilisation du code de & au lieu de & lui meme.
 
C'est pareil pour les espaces dans une url essaye de mettre un   ca ne marchera pas, par contre mettre %20 est ok : tu inclus le code de l'espace.
 
La question n'est pas de savoir si & est valide : ca l'est, validator lit & comme une entite, le parser php, lui, lit & le caractere. Selon moi la question est "pourquoi se compliquer la vie avec & alors qu'on n'en a pas besoin)
 
:hello:


Message édité par Kahyman le 24-01-2004 à 20:43:23
Reply

Marsh Posté le 24-01-2004 à 20:42:31    

gizmo a écrit :

chez moi & fonctionne sans problème, et php est prévu pour fonctionner avec. C'est ta config qui déconne.

Je pense la même chose (& marche chez moi aussi).


---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
Reply

Marsh Posté le 24-01-2004 à 20:42:32    

Kahyman a écrit :


 
C'est pareil pour les espaces dans une url essaxe de mettre un   ca ne marchera pas, par contre mettre %20 est ok : tu inclus le code de l'espace.


 
  n'est pas une espace "classique", son code n'est pas . Il s'agit d'un espace insécable
 

Kahyman a écrit :


La question n'est pas de savoir si & est valide : ca l'est, validator lit & comme une entite, le parser php, lui, lit & le caractere. Selon moi la question est "pourquoi se compliquer la vie avec & alors qu'on n'en a pas besoin)


 
moi je ne pige toujours pas ce que & pose comme problème ; ça marche nickel dans mes pages


Message édité par antp le 24-01-2004 à 20:43:22

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 20:44:26    

antp a écrit :


moi je ne pige toujours pas ce que & pose comme problème ; ça marche nickel dans mes pages


 
ca ne POSE PAS DE PROBLEME si tu fais un init_set (mais vous me lisez ou non ?), vous vous compliquez juste la vie.

Reply

Marsh Posté le 24-01-2004 à 20:47:40    

Vous modifiez le separator char au lieu d'utiliser celui par defaut. Libre a vous de le faire, perso je trouve que c'est se compliquer la vie.
 
Faites comme vous voulez.

Reply

Marsh Posté le 24-01-2004 à 21:30:25    

Et comment tu fais sans modifier le séparateur par défaut ? j'ai toujours rien compris [:mlc]
Vu que PHP ajoute lui-même le &PHPSESSID il faut bien lui dire de quoi est composé ce "&", non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 21:47:24    

antp a écrit :

Et comment tu fais sans modifier le séparateur par défaut ? j'ai toujours rien compris [:mlc]
Vu que PHP ajoute lui-même le &PHPSESSID il faut bien lui dire de quoi est composé ce "&", non ?


 
Mais C'EST le separateur par defaut ! & et & c'est pareil, je ne sais pas comment t'expliquer ca autrement moi. c'est EXACTEMENT le meme caractere &.  
 
Si tu ecris & (1 seul caractere pas un & suivi d'un # suivi d'un 3 d'un 8 puis d'un ;, mais bien le caractere & lui meme en personne) le parser php lit & qui EST le separateur par defaut donc pas besoin de set_init. Toi ce que tu fais avec le set init c'est que tu lui dis de changer le separateur par defaut en & (5 caracteres &, a, m, p, et ;).  
 
Validator lit tout caractere apres caractere donc il lit lors de la validation &,#,3,8,; ce qu'il voit comme une entite qu'il connait. C'est pour ca que ca marche.
 
Avec & pareil, validator lit &,a,m,p,; c'est ok. Par contre php il faut lui dire "ca c'est le separateur", ce que tu fais avec set_init, si tu ne le fais pas il ne comprend pas.
 
Je change la representation du pattern de separation sans toucher a ce pattern, toi tu changes le pattern de separation.
 
Argh t'as compris ou je dois essayer autrement ?
 
 :cry:  

Reply

Marsh Posté le 24-01-2004 à 21:54:07    

non j'ai pas compris
 
donc j'ai un lien <a href="index.php?param=a">
sans utiliser ini_set, comment faire pour que PHP ajoute &#38;PHPSESSID plutôt que &PHPSESSID ?
&#38; c'est traité au niveau HTML.
 
Tu dis  

Citation :


Si tu ecris &#38; (1 seul caractere pas un & suivi d'un # suivi d'un 3 d'un 8 puis d'un ;, mais bien le caractere & lui meme en personne) le parser php lit &


Comment t'écris & différement que & ? &#38; c'est pas un seul caractère pour PHP


Message édité par antp le 24-01-2004 à 21:54:18

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 21:57:43    


 
hors sujet mais vu que je viens de le voir je t'en fais part : tes css sur ton site ne sont pas valides contrairement a ce que tu dis (logo w3c) :-)

Reply

Marsh Posté le 24-01-2004 à 22:00:11    

Reply

Marsh Posté le 24-01-2004 à 22:07:26    

au sujet des "&", pour être sûr qu'on parle bien de la même chose, on parle bien des "&PHPSESSID" ajoutés par PHP dans le cas où il balance un simple caractère "&", sachant aussi que ce "bug" a peut-être été corrigé dans les versions récentes et que ça peut se modifier dans php.ini plutôt que via ini_set ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 22:09:33    

Citation :

[nom]antp a écrit[/nom]non j'ai pas compris


 
ZUT  :lol:  
 

Citation :

donc j'ai un lien <a href="index.php?param=a">
sans utiliser ini_set, comment faire pour que PHP ajoute &#38;PHPSESSID plutôt que &PHPSESSID ?
&#38; c'est traité au niveau HTML.


 
Non ! ce n'est pas traite au niveau html, au niveau de l'uri c'est compris correctement (c.f. plus loin).
 
Maintenant si tu veux faire de l'inclusion automatique en recuperant le separateur par defaut, ok, si ton serveur est configure par defaut pour inclure des & c'est ko tu dois faire un set_init, mais ca n'a rien a voir avec l'interpretation, c'est au niveau de la generation du code que tu as ton probleme.
 
Si tu parles de generation d'uri alors que je parle d'interpretation d'uri on ne s'en sortira pas... :)
 
 

Citation :

Tu dis  

Citation :


Si tu ecris &#38; (1 seul caractere pas un & suivi d'un # suivi d'un 3 d'un 8 puis d'un ;, mais bien le caractere & lui meme en personne) le parser php lit &


Comment t'écris & différement que & ? &#38; c'est pas un seul caractère pour PHP


tu l'ecris &#38; pour le parser lors de la lecture de l'uri c'est pareil que & (essaye je te dis).
 
Un exemple : une de mes uri est generee comme suit par mon code php : /index.php?cat=research&#38;sub=papers&#38;#38;id=sac03 si je clique sur le lien l'uri est bien interpretee comme /index.php?cat=research&sub=papers&id=sac03 sans que je n'aie eu a faire de set_init.
 
Je comprends ce que tu dis, comprends tu ce que je dis a present ? :D


Message édité par Kahyman le 24-01-2004 à 22:12:52
Reply

Marsh Posté le 24-01-2004 à 22:11:40    

Kahyman> et comment tu fais quand PHP t'ajoute automatiquement l'ID de session dans l'URL pour que ta page reste valide? :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 24-01-2004 à 22:14:10    


c'est n'importe quoi cette validation


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 24-01-2004 à 22:14:20    

drasche a écrit :

Kahyman> et comment tu fais quand PHP t'ajoute automatiquement l'ID de session dans l'URL pour que ta page reste valide? :o


 
Je crois avoir repondu a cette question

Reply

Marsh Posté le 24-01-2004 à 22:15:35    


 
heu c'est n'importe quoi, il met une erreur sur chaque ligne
Quand on lui donne directement la page CSS ça passe sans erreurs


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 22:18:17    

antp a écrit :


 
heu c'est n'importe quoi, il met une erreur sur chaque ligne
Quand on lui donne directement la page CSS ça passe sans erreurs


 
Effectivement

Reply

Marsh Posté le 24-01-2004 à 22:18:39    

Kahyman a écrit :

si ton serveur est configure par defaut pour inclure des & c'est ko tu dois faire un set_init, mais ca n'a rien a voir avec l'interpretation, c'est au niveau de la generation du code que tu as ton probleme.


 
ouais enfin le problème à la base c'est justement que le serveur balance des & ...
 

Kahyman a écrit :

 
Un exemple : une de mes uri est generee comme suit par mon code php : /index.php?cat=research&#38;sub=papers&#38;#38;id=sac03 si je clique sur le lien l'uri est bien interpretee comme /index.php?cat=research&sub=papers&id=sac03 sans que je n'aie eu a faire de set_init.
 
Je comprends ce que tu dis, comprends tu ce que je dis a present ? :D


 
c'est que ton serveur est bien configuré... ce qui est rarement le cas, d'où des topics comme celui-ci
 
Encore heureux que l'URI soit bien interprêtée, vu qu'il s'agit d'une URI normale. On peut y mettre des &amp; ça passera pareil.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 22:19:17    

Kahyman a écrit :

Je crois avoir repondu a cette question


j'ai lu tous tes posts et je n'en trouve aucun qui donne la réponse.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 24-01-2004 à 22:27:18    

drasche a écrit :


j'ai lu tous tes posts et je n'en trouve aucun qui donne la réponse.


Citation :

Maintenant si tu veux faire de l'inclusion automatique en recuperant le separateur par defaut, ok, si ton serveur est configure par defaut pour inclure des & c'est ko tu dois faire un set_init, mais ca n'a rien a voir avec l'interpretation, c'est au niveau de la generation du code que tu as ton probleme.


 
Donc oui (comme l'indique la doc) vous avez raison pour la generation et l'utilisation des sessions. Mais oui (bien que peut-etre (surement) off-topic) mon &#38;#38; est bien interprete
 
oh et puis zut je vais me coucher !
 
 :whistle:  
 
 :hello:

Reply

Marsh Posté le 24-01-2004 à 22:30:13    

ton &#38; est bien interprêté, oui, mais le problème est que dans sa config par défaut PHP balance souvent un & et non un &#38; [:mlc]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-01-2004 à 22:30:14    

antp a écrit :


Encore heureux que l'URI soit bien interprêtée, vu qu'il s'agit d'une URI normale. On peut y mettre des &amp; ça passera pareil.


 
Non, le input separator n'est pas &amp; mais & donc ca ne passe pas. (j'ai essaye)
 

Reply

Marsh Posté le 24-01-2004 à 22:40:29    

Reply

Marsh Posté le 24-01-2004 à 22:48:24    


ah toi aussi? :D
 
Kahyman> franchement t'as pas l'impression d'être seul dans ton trip? :D


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 25-01-2004 à 00:06:08    

Kahyman a écrit :


 
Non, le input separator n'est pas &amp; mais & donc ca ne passe pas. (j'ai essaye)
 
 


Bon, faut qu'on t'explique comment fonctionne le protocole HTML (j'ai pas dit php) ou t'arrète de dire des conneries...

Reply

Marsh Posté le 01-09-2004 à 17:17:12    

Je suis aussi confronté au problème des "&" du PHPSESSID.
Le problème est que je suis sur un compte chez Free et que le ini_set ne semble pas fonctionner (Pas de message d'erreur en plus). Est-ce qu'il y a un autre moyen (autre que de changer d'hébergeur) ou est-ce que le fait d'avoir un compte chez Free m'empeche d'avoir des pages valides?


Message édité par yo c spi le 01-09-2004 à 17:26:40

---------------
J.C. Farinet
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed