8797 sujets

Développement web côté serveur, CMS

Bonjour à tous !

Voilà, je suis en train de (tenter de) valider un site aux normes W3C.

Seulement, voici un problème récurent:

Line 38, column 49: cannot generate system identifier for general entity "PHPSESSID"

...nbsp;<a href='profil.php?pseudo=XXXX&PHPSESSID=1f5de12999205a0bf3ffa9a0068714


Alors en faisant une recherche sur le forum, j'ai bien compris qu'il fallait remplacer les "&" dans les urls par des "&amp;"

Seulement dans ce cas particulier, le nom de la session est ajoutée par le serveur, je n'ai donc aucune main mise sur le "&"

Impossibilité de valider alors ?

Merci pour votre aide !
Modifié le 29 Jan 2005 - 21:53
Oups, en effet, j'avais pas vu ce post :$

J'ai donc suivi le lien, qui m'a amené à cette page:

http://php.developpez.com/faq/?page=sessions#sessions_xhtmlvalide

J'ai utilisé cette fonction, seulement (ou alors j'ai pas tout capté) elle ne fonctionne pas dans l'exemple donné. Pour que ça fonctionne je suis passé de:

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


à

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


D'autres personnes ont peut être été confrontées à ce pb ?

Merci Sib pour ton aide Smiley smile
Tu peux essayer ça peut être

ini_set("session.use_trans_sid","0");
ini_set("arg_separator.output","&amp;");


J'ai utilisé cela pour un client et ça fonctionne très bien. Par contre je crois me souvenir que lors des test sur un hébergement gratuit (en l'occurence free) cela posait des problèmes.

Petit détail important, les deux lignes sont à placer avant le session_start.

Eric.
Modifié le 31 Jan 2005 - 16:03
Le passage automatique de l'identifiant de session dans l'URL c'est de toute façon une horreur à éviter. Plutot que de corriger l'erreur, je te propose de désactiver au plus vite cette fonctionnalité batarde qui pose des pb de sécurité.
a écrit :
Seulement dans ce cas particulier, le nom de la session est ajoutée par le serveur, je n'ai donc aucune main mise sur le "&"


et j'ai pas accès au phpconfig Smiley cligne
Ganf a écrit :
je te propose de désactiver au plus vite cette fonctionnalité batarde qui pose des pb de sécurité.


Bon, bon, bon... je ne vais pas m'ettendre sur la question car ce n'est pas le sujet du post mais quand même... je ne peut pas laisser passer cette affirmation qui est totalement infondé !

Cette fonctionnalité ne souffre d'aucun problème de sécurité particulier ! En effet, cette méthode de passage de l'identifiant de session n'est là que pour compenser un éventuelle bloquage des cookies (qui sont tout aussi peu sur que les variables de type GET). De plus, les sessions ne sont valide que le temps ou une fenètre navigateur est ouverte... dés que celle-ci est fermé, l'identifiant de session est imediatement détruit (en même temps que les données de sessions si le serveur est correctement configuré)... donc, le fait de connaitre cette identifiant n'apporte rien à un eventuel hacker !

Smiley ohwell
Salut,
la solution que j'ai trouvé c'est de renomer la session:
session_name("amp;MaSession");
session_start();


Et ça marche !!
bon c'est un peu de la triche, mais quand on ne peut pas utiliser le ini_set
c'est bien quand même!
Smiley cligne
Modifié par AngelUs (22 Jun 2005 - 00:01)
a écrit :
Le passage automatique de l'identifiant de session dans l'URL c'est de toute façon une horreur à éviter. Plutot que de corriger l'erreur, je te propose de désactiver au plus vite cette fonctionnalité batarde qui pose des pb de sécurité.


C'est absolument faux. ça a déjà été dit plus haut, mais je rajoute :

ce mécanisme est justement génial. Php va lui meme rajouter ça aux url si les cookies sont désactivé. ça permet donc à tout le monde de profiter des session....
AngelUs a écrit :
Salut,
la solution que j'ai trouvé c'est de renomer la session:
session_name("amp;MaSession");
session_start();


Et ça marche !!
bon c'est un peu de la triche, mais quand on ne peut pas utiliser le ini_set
c'est bien quand même!
Smiley cligne


looool la solution, héhé, pas bête ;o)
Bon sinon moi, pour pas me faire chier, je mets simplement avant l'appel de session_init() :

if($_SERVER["HTTP_USER_AGENT"] && (eregi("W3C_Validator", $_SERVER["HTTP_USER_AGENT"]) || eregi("W3C_CSS_Validator", $_SERVER["HTTP_USER_AGENT"]))
return;

(pour ceux qui ont pas le droit de toucher au php.ini)
Modifié par foxdie (04 Nov 2005 - 14:00)