PB de compatibilité avec W3C - PHP - Programmation
Marsh Posté le 21-01-2004 à 18:29:50
A part ça, tu peux choisir le séparateur dans la php.ini et mettre & si mes souvenirs sont bons.
Marsh Posté le 21-01-2004 à 18:31:15
tous les & des URL en &
et avant le session_start :
Code :
|
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
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 ;-)
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. |
Il fallait lire & a la place du & (la preuve que ca marche bien :-D erf)
Marsh Posté le 24-01-2004 à 20:11:22
je vois pas en quoi ça dispense du ini_set
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.
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.
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...
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.
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 &
Marsh Posté le 24-01-2004 à 20:36:14
antp a écrit : heu le & est tout autant un & que le & pour du HTML. |
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)
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).
Marsh Posté le 24-01-2004 à 20:42:32
Kahyman a écrit : |
n'est pas une espace "classique", son code n'est pas . Il s'agit d'un espace insécable
Kahyman a écrit : |
moi je ne pige toujours pas ce que & pose comme problème ; ça marche nickel dans mes pages
Marsh Posté le 24-01-2004 à 20:44:26
antp a écrit : |
ca ne POSE PAS DE PROBLEME si tu fais un init_set (mais vous me lisez ou non ?), vous vous compliquez juste la vie.
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.
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
Vu que PHP ajoute lui-même le &PHPSESSID il faut bien lui dire de quoi est composé ce "&", non ?
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 |
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 ?
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 &PHPSESSID plutôt que &PHPSESSID ?
& c'est traité au niveau HTML.
Tu dis
Citation : |
Comment t'écris & différement que & ? & c'est pas un seul caractère pour PHP
Marsh Posté le 24-01-2004 à 21:57:43
antp a écrit : |
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) :-)
Marsh Posté le 24-01-2004 à 22:00:11
http://jigsaw.w3.org/css-validator [...] medium=all
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 ?
Marsh Posté le 24-01-2004 à 22:09:33
Citation : [nom]antp a écrit[/nom]non j'ai pas compris |
ZUT
Citation : donc j'ai un lien <a href="index.php?param=a"> |
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
|
tu l'ecris & 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&sub=papers&#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 ?
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?
Marsh Posté le 24-01-2004 à 22:14:10
c'est n'importe quoi cette validation
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? |
Je crois avoir repondu a cette question
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
Marsh Posté le 24-01-2004 à 22:18:17
antp a écrit : |
Effectivement
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 : |
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 & ça passera pareil.
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.
Marsh Posté le 24-01-2004 à 22:27:18
drasche a écrit : |
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; est bien interprete
oh et puis zut je vais me coucher !
Marsh Posté le 24-01-2004 à 22:30:13
ton & est bien interprêté, oui, mais le problème est que dans sa config par défaut PHP balance souvent un & et non un &
Marsh Posté le 24-01-2004 à 22:30:14
antp a écrit : |
Non, le input separator n'est pas & mais & donc ca ne passe pas. (j'ai essaye)
Marsh Posté le 24-01-2004 à 22:40:29
ReplyMarsh Posté le 24-01-2004 à 22:48:24
ah toi aussi?
Kahyman> franchement t'as pas l'impression d'être seul dans ton trip?
Marsh Posté le 25-01-2004 à 00:06:08
Kahyman a écrit : |
Bon, faut qu'on t'explique comment fonctionne le protocole HTML (j'ai pas dit php) ou t'arrète de dire des conneries...
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?
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