Probleme phpsessid

Résolu
soothsayer Messages postés 7 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 24 août 2006 - 22 août 2006 à 16:55
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 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!
A voir également:

11 réponses

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

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
soothsayer Messages postés 7 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 24 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
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
23 août 2006 à 09:30
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
0
soothsayer Messages postés 7 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 24 août 2006
23 août 2006 à 10:43
j'ai controlé la config : le trans-id est activé, je pense que le souci vient de là!
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
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
0
soothsayer Messages postés 7 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 24 août 2006
23 août 2006 à 11:17
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.
0
soothsayer Messages postés 7 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 24 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é...).
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
24 août 2006 à 21:34
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 ;)
0