soothsayer
Messages postés7Date d'inscriptionvendredi 9 juin 2006StatutMembreDernière intervention24 août 2006
-
22 août 2006 à 16:55
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
24 août 2006 à 21:34
Bonjour,
j'ai un petit soucis que je ne parviens pas à résoudre:
sur l'index de mon site (page d'accueil avec compteur de visites "basique" en php )
lorsqu'on clique sur lien vers la page d'accueil, la variable PHPSESSID est envoyée en clair à la fin de l'url.
Si je supprime le "session_start(); " de ma page, cela rentre dans l'ordre mais j'en ai besoin.
Sur les autres pages du site ça fonctionne pourtant correctement...
voici le code du compteur (début de la page) :
<?php
session_start();
// aller chercher le nombre de visiteurs
$fichier=fopen("live/users/compteur.txt","r");
$nombre_de_visites=fread($fichier,filesize("live/users/compteur.txt"));
fclose($fichier);
//visiteur déjà compté?:
if($_SESSION ["compte"]==0){
//incremente le compteur
$fichier=fopen("live/users/compteur.txt","w+");
$nombre_de_visites=$nombre_de_visites+1;
fwrite($fichier,$nombre_de_visites);
fclose ($fichier);
//rajouter dans le tableau de l'utilisateur
$_SESSION["compte"]=1;
}
?>
Si quelqu'un a une idée ?...
merci d'avance!
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 22 août 2006 à 17:55
ca depend surement de la config de ton navigateur. mais c'est peut etre aussi celle du serveur, mais je pense que la plus part des serveurs passent d'abord par les cookies.
Il y a deux méthodes de propagation de l'identifiant de session :
<li>
Cookies
</li><li>
Par URL
</li>
Le module de session supporte les deux méthodes. Les cookies sont
optimaux, mais comme ils ne sont pas sûrs (tous les internautes
ne les acceptent pas), ils ne sont pas fiables. La seconde
méthode place l'identifiant de session directement dans les URL.
PHP est capable de faire cela de manière transparente, lorsqu'il est
compilé avec l'option <var class= "literal">--enable-trans-sid</var>. Si vous activez
cette option, les URL relatives seront modifiées pour contenir
l'identifiant de session automatiquement. Alternativement,
vous pouvez utiliser la constante <tt class="constant"> SID </tt>, qui est
définie, si le client n'a pas envoyé le cookie approprié.
<tt class ="constant">SID</tt> est soit de la forme
<var class= "literal">session_name=session_id</var> ou une chaîne vide.
Note :
L'option arg_separator.output de <tt class ="filename">php.ini</tt> vous permet de personnaliser le séparateur d'arguments.
Pour être complètement en accord avec les spécifications XHTML, spécifiez
& ici.
Alternativement, vous pouvez utiliser la constante <tt class= "constant"> SID </tt>
qui est définie si la session a commencé. Si le client n'envoie pas un cookie de session
approprié, il aura la forme <var class ="literal">session_name=session_id</var>.
Sinon, il vaudra une chaîne vide. Ainsi, vous pouvez dans tous les cas
l'inclure dans l'URL.
soothsayer
Messages postés7Date d'inscriptionvendredi 9 juin 2006StatutMembreDernière intervention24 août 2006 22 août 2006 à 18:10
ben,en fait ça fait la même chose sur firefox et sur IE, donc ça viendrait de la config du serveur?
ce que j'arrive pas à comprendre c'est pourquoi sur les autres pages du site où il y a aussi un session-start(); j'ai pas ça...(en même temps je sais pas si c'est vraiment gênant ...)
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 22 août 2006 à 21:53
l'ouverture de ta balise php (<?) est bien le 1er caractere de ta page? genre ya pas un espace qui traine avant? paske c bizare si ca le fait que sur une seule page!
peut etre parce que c'est ta page d'accueil et que une fois ta session demarree, il le met plus?!
Vous n’avez pas trouvé la réponse que vous recherchez ?
soothsayer
Messages postés7Date d'inscriptionvendredi 9 juin 2006StatutMembreDernière intervention24 août 2006 22 août 2006 à 22:19
il s'agit bien du premier caractère de ma page.(je viens quand même de vérifier)
je pense que c'est lié à la configuration du serveur, car un autre site que j'ai réalisé avec le même code en début de première page fonctionne parfaitement sur un autre serveur ... donc je vais voir avec l'hebergeur du site (je vais me renseigner sur leur option "enable-trans-sid")
merci
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 23 août 2006 à 11:12
peut etre peut tu contourner le probleme en enregistrant toi meme le cookie avec la constante SID puis, quand tu demarre la session, tu met la valeur que tu a lu dans le cookie grace à session_id
soothsayer
Messages postés7Date d'inscriptionvendredi 9 juin 2006StatutMembreDernière intervention24 août 2006 24 août 2006 à 21:24
bonjour,
je termine mon sujet, j'ai trouvé le moyen de contourner le problème.
c'est peut-être un peu bizarre comme méthode, mais bon...ça fonctionne !
en fait , au lieu de faire un simple " ma page suivante" (avec mon PHPSESSID qui s'ajoutait à la suite), je crée un formulaire en POST, avec une action sur ma page suivante, un input "submit" et un input 'hidden' qui envoie mon PHPSESSID (en post,donc masqué...).