Probleme phpsessid

Résolu
Signaler
Messages postés
7
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 août 2006
-
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
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!

11 réponses

Messages postés
7
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 août 2006

au fait,
encore merci Guillemouze pour le temps que tu as pris pour m'aider .
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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.

extrait de php.net:


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
&amp; 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.
Messages postés
7
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 août 2006

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 ...)
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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?!
Messages postés
7
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 août 2006

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
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
essaye de regarder la config de ton serveur. pour y acceder, rien de plus simple. tu cree une page xx.php qui contient uniquement :

<? phpinfo(); ?>

et tu va consulter cette page
Messages postés
7
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 août 2006

j'ai controlé la config : le trans-id est activé, je pense que le souci vient de là!
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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
Messages postés
7
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 août 2006

c'est ce que je pensais tenter, je fais un essai aujourd'hui (si j'en ai le temps!) et je te tiens informé du résultat.
merci pour ton aide.
Messages postés
7
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 août 2006

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é...).
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
no problemo ;)
on est la pour ca, meme si on arrive pas toujours a trouver une reponse

sinon ta solution, elle me semble pas trop crade. avec ce que tu avais comme probleme.
bien joue ;)