Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2007, 11h12   #1
Membre habitué
 
Inscription : mai 2002
Messages : 475
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 475
Points : 105
Points : 105
Par défaut [Cookies] Erreurs de validation HTML 4.01 Transitional!

Bonjour

lorsque je teste la validité de l'index du site, j'ai ces messages suivants qui concernent la session php du site :

Citation:
Warning Line 201 column 57: cannot generate system identifier for general entity "PHPSESSID".
...><a href="les_iles.php?ile=solitaire&PHPSESSID=1efd7785bd566e7531ff1c796c7cfa
An entity reference was found in the document, but there is no reference by that name defined. Often this is caused by misspelling the reference name, unencoded ampersands, or by leaving off the trailing semicolon (;). The most common cause of this error is unencoded ampersands in URLs as described by the WDG in "Ampersands in URLs".

Entity references start with an ampersand (&) and end with a semicolon (;). If you want to use a literal ampersand in your document you must encode it as "&amp;" (even inside URLs!). Be careful to end entity references with a semicolon or your entity reference may get interpreted in connection with the following text. Also keep in mind that named entity references are case-sensitive; &Aelig; and &aelig; are different characters.

If this error appears in some markup generated by PHP's session handling code, this article has explanations and solutions to your problem.

Note that in most documents, errors related to entity references will trigger up to 5 separate messages from the Validator. Usually these will all disappear when the original problem is fixed.



Error Line 201 column 57: general entity "PHPSESSID" not defined and no default entity.
...><a href="les_iles.php?ile=solitaire&PHPSESSID=1efd7785bd566e7531ff1c796c7cfa
This is usually a cascading error caused by a an undefined entity reference or use of an unencoded ampersand (&) in an URL or body text. See the previous message for further details.
les sessions sont gérées avec le code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
if(isset($_REQUEST["lang"])){
		session_start();
		$_SESSION['version'] = $_REQUEST["lang"];
}else{
		session_start();
		$_SESSION['version'] = $_SESSION['version'];
}
if($_SESSION['version']==""){
		session_start();
		$_SESSION['version'] = "FR";
}
Comment éviter ces erreurs de validation

merci de votre aide
nicerico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 13h14   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je crois qu'il vous faudrait redéfinir la directive arg_separator.output à &amp; au lieu de & (dans le fichier php.ini, par htaccess ou via ini_set).

Attention, vos sessions ne semblent pas basées sur les cookies pour la transmission de l'identifiant (session.use_cookies à 1 et session.use_only_cookies à 1) mais par réécriture des liens et formulaires internes (session.use_trans_sid à 1). La sécurité en est considérablement diminuée.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2007, 09h00   #3
Membre habitué
 
Inscription : mai 2002
Messages : 475
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 475
Points : 105
Points : 105
merci de votre réponse

en fait le site est bilingue et pour pouvoir gerer les variables j'ai donc mis un lien sur l'index du type : lien.php?lang=FR
avec le code suivant pour gerer tout ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
if(isset($_REQUEST["lang"])){
		session_start();
		$_SESSION['version'] = $_REQUEST["lang"];
}else{
		session_start();
		$_SESSION['version'] = $_SESSION['version'];
}
if($_SESSION['version']==""){
		session_start();
		$_SESSION['version'] = "FR";
}
cette methode est donc dangereuse?
sachant que c'est juste "FR" ou "EN" qui est envoyé en session
dois je me tourner vers des sessions basées sur des cookies dans ce cas?

une autre question :
pourquoi de temps en temps j'ai l'affichage dans la barre d'adresse du navigateur ce qui suit :
alors que je voudrais :
que faire pour que &PHPSESSID ... n'apparaisse pas?
cela est il lié à la methode que j'emploie pour les sessions?

le php info :
Citation:
arg_separator.output & &

session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On
pour redéfinir la directive arg_separator.output à &amp; au lieu de & (dans le fichier php.ini, il faudrait donc que je passe par un .htaccess
donc y ajouter le code suivant?
Code :
arg_separator.output 1;
et si je suis obligé d'utiliser les cookies, ajouter aussi
Code :
session.use_only_cookies 1;
(je ne suis pas sur du code pour le .htaccess)

encore merci
nicerico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2007, 10h42   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par nicerico
Code :
1
2
3
4
}else{
		session_start();
		$_SESSION['version'] = $_SESSION['version'];
}
Quel intérêt y-a-t-il à faire ceci ?

Citation:
Envoyé par nicerico
cette methode est donc dangereuse?
sachant que c'est juste "FR" ou "EN" qui est envoyé en session
dois je me tourner vers des sessions basées sur des cookies dans ce cas?
Si les données sont limitées à ça non, mais vous serez certainement amenés à stocker d'autres données par la suite ...

Citation:
Envoyé par nicerico
que faire pour que &PHPSESSID ... n'apparaisse pas?
cela est il lié à la methode que j'emploie pour les sessions?
Oui ceci est du au fait que session.use_trans_sid soit actif (sur On). D'après le phpinfo la méthode des cookies est aussi active et a priorité donc il doit y avoir un problème au niveau des cookies. Les acceptez-vous (voir les options de votre navigateur) ?

Citation:
Envoyé par nicerico
pour redéfinir la directive arg_separator.output à &amp; au lieu de & (dans le fichier php.ini, il faudrait donc que je passe par un .htaccess
donc y ajouter le code suivant?
Code :
arg_separator.output 1;
et si je suis obligé d'utiliser les cookies, ajouter aussi
Code :
session.use_only_cookies 1;
(je ne suis pas sur du code pour le .htaccess)
Dans un .htaccess (il faut que PHP soit utilisé comme module Apache et que votre hébergeur vous le permette - à voir dans les documentations qu'il met à votre disposition ou contacter le support après essai), mettre :
Citation:
php_value arg_separator.output &amp;
(ne serait plus vraiment utile si vos sessions n'étaient basées que sur les cookies)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h43.


 
 
 
 
Partenaires

Hébergement Web