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 22/05/2006, 21h05   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Par défaut [Cookies] Le phpsessid apparaît dans l'URL une fois puis disparaît

Bonjour,

J'ai le problème suivant :
Les numéros de sessions sont naturellement masqués dans l'url de mon site. Mais lors de la toute première connexion, le numéro de session apparait dans l'url du premier lien cliqué, quel qu'il soit, puis il disparait et les urls sont propres pour le reste de la visite.

J'ai peur que ça me fasse du duplicate content ou des liens foireux dans les moteurs de recherche, qu'est ce que vous en pensez ? Y'a t'il moyen de corriger cela et à quoi est-ce que c'est dû?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2006, 21h07   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Je pense que le premier lien contient le SID parce que PHP ne sait pas si les coockies seront effectivement transmis, donc il faut mettre use_only_cookie à 1 pour ne plus voir le trans_id
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2006, 21h08   #3
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
C'est un serveur mutualisé chez ovh, comment je fais pour bidouiller le use_only_cookie ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2006, 21h50   #4
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Je ne trouve même pas la fonction dans le manuel php.

Je pensais que mes sessions passaient exclusivement dans l'url, mais quand je vide les cookies je suis déconnecté.

Comment savoir ? Je dois regarder dans phpInfo() ? Mais quoi ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2006, 23h36   #5
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
essaie avec ini_set, ou alors si OVH l'accepte, met :
Code :
php_flag session.use_only_cookies on
dans un .htaccess à la racine de ton site...
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 22h35   #6
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
tableau_session.gif
Bon alors voici la rubrique session de mon phpinfo().

Là je viens bien de relire que, pour le référencement, il est fondamental que les robots puissent avoir accès au site sans passer par les sessions.
Il faut donc leur réserver un "accès sans session".

J'ai donc fait cela, dans l'espoir que les sessions ne s'initialisent que si le gars est identifié :
Code :
1
2
3
4
5
6
<?php
if(isset($_SESSION['numeroConnexion']))
{
session_start();
}
?>
Bien sur, c'est zero, la session n'est pas créée, dès que je change de page après avoir initilialisé $_SESSION[numeroConnexion], lors de l'identification, cette variable est perdue.

En même temps pour la sécurité, parait-il qu'il vaut beaucoup mieux passer par les cookies sans passer par les urls, même si c'est plus restrictif pour les utilisateurs.
Donc, compte tenu des informations de mon phpinfo() vous me suggérez de faire comment s'il vous plait ?

Je rappelle que le problème est que les id de session apparaissent dans l'url quand on se connecte puis disparraissent au bout d'1 ou 2 changement de page. Mais ils doivent toujours rester masqué.

Merci d'avance pour vos conseils (la soluction de Swoög, juste au dessus, c'est la bonne ? Si oui je recopie simplement la ligne comme ça ou c'est pas tout à fait ça ?)
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 22h50   #7
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
En plus là je viens de lire qu'il ne faut pas forcer les sessions par les cookies parce que les moteurs ne les lisent pas donc elles passent automatiquement par l'url.

Mais moi je m'en fiche il y a pas besoin de session pour visiter mon site, ça ne sert que si le visiteur est identifié, et googlebot ou yahooslurpt et le truc de msn vont pas s'ouvrir un compte.

Donc ce qui serait bien, si c'est possible, serait de ne créer les sessions, donc de faire session_start() qu'à partir du moment ou le visiteur est inscrit. Mais comme dans mon exemple juste avant, ça foire.

__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 22h52   #8
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Essayes plutot :

Code :
1
2
3
4
5
6
<?php
if( isset( $_COOKIE[ session_name() ] ) )
{
    session_start();
}
?>
La solution de Swoog est effectivement la mieux, à condition que PHP tourne en module Apache. Ce qui n'est pas le cas chez OVH il me semble.
__________________
Google is watching you !
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h06   #9
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Non alors la ligne de Swoög, j'ai essayé j'obtiens SERVER INTERNAL ERROR.

Je viens d'essayer ton code Kioob, tel quel d'abord, mais ça n'a rien changé, puis j'ai rajouté le nom d'une variable de sessiondans session_name(numeroConnexion) mais ça n'avait pas vraiment l'air de coller avec ce que dit le manuel php (en même temps j'ai pas de nom pour mes sessions moi, j'ai essayé ça à tout hasard ).

Donc y'a rien qui fonctionne pour l'instant, soit j'ai les urls avec idsession, horreur, soit l'espace membre est inutilisable, catastrophe
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h10   #10
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
"Chez moi ça marche".

Et il n'y a évidement aucun paramètre à fournir à session_name() !
__________________
Google is watching you !
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h12   #11
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Bein avec ou sans chez moi ça marche pas du tout, je t'envie hein.

Je reprécise que je suis chez ovh et que j'ai un urlrewriting, je ne vois pas ce qu'il viendrait faire là dedans mais bon.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h15   #12
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
J'imagine que tu utilises la constante SID ? Auquel cas c'est un comportement normal.
Le SID est une constante qui est remplie du numéro de session lorsque :
- PHP ne sait pas si le client accepte le cookie
- PHP sait que le client refuse les cookies

Autrement, lorsque le client accepte le Cookie. PHP ne remplit pas le SID, et l'envoi via les cookie.

Seulement pour savoir si le client accepte ou non les cookies, PHP à besoin de tester au moins une fois le client.
D'ou l'appartion du numéro de session sur la première page.
Suite à cela il decide d'affecter ou non le SID.
Dans ton cas il ne l'affecte plus, puisque tu acceptes les cookies.

Pour t'en assurer bloque les cookies sur ton navigateur et commence une nouvelle session, tu verra le SID toujours remplit.

bbye
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h18   #13
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Salut ePoX,

Avant de reprendre ce que tu me dis, voilà la réponse d'OVH :
Citation:
Cette partie est une partie webmaster et nous ne faisons pas d'assistance pour cela, mais il faudrait voir du côté de la valeur php use_trans_id.
Bon je reprend :
Citation:
J'imagine que tu utilises la constante SID ? Auquel cas c'est un comportement normal.
J'ai pas dit que c'est pas normal, j'ai dit que ça me plait pas. Je sais pas ce que c'est que la constante SID, je vais me renseigner.

Autrement, lorsque le client accepte le Cookie. PHP ne remplit pas le SID, et l'envoi via les cookie.

Citation:
Seulement pour savoir si le client accepte ou non les cookies, PHP à besoin de tester au moins une fois le client.
D'ou l'appartion du numéro de session sur la première page.
Suite à cela il decide d'affecter ou non le SID.
Dans ton cas il ne l'affecte plus, puisque tu acceptes les cookies.
Ok je comprend le mécanisme, mais ça règle rien.

Citation:
Pour t'en assurer bloque les cookies sur ton navigateur et commence une nouvelle session, tu verra le SID toujours remplit.
Je te crois ePoX, je te crois

**edit**
Kioob, si ça fonctionne pas ta solution, c'est peut être parce que comme dit ePoX php le passe une fois par l'url avant d'initialiser le cookie, mais dans ton système on teste directement si le cookie est initialisé. Comme il n'y a encore rien au moment du test, hop la session n'est pas créée et les variables disparaissent ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h26   #14
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Citation:
Avant de reprendre ce que tu me dis, voilà la réponse d'OVH :

Citation:
Cette partie est une partie webmaster et nous ne faisons pas d'assistance pour cela, mais il faudrait voir du côté de la valeur php use_trans_id.
Ca c'est OVH tout craché

En fait j'ai oublié de dire un truc, c'est que je trouve ce système plutot bien. Car il prend en compte les deux cas de manières transparente. Donc tu aura moins d'utilisateur lésé parcequ'il ne peuvent accepter le cookie.

enfin voila bbye
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h29   #15
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
En fait j'ai oublié de dire un truc, c'est que je trouve ce système plutot bien. Car il prend en compte les deux cas de manières transparente. Donc tu aura moins d'utilisateur lésé parcequ'il ne peuvent accepter le cookie.
Non je trouve que c'est un système catastrophique parce que je risque d'avoir 80% de visiteurs en moins vu que sur les moteurs mes pages vont être inindexables ou générer du duplicate content. C'est le coup classique en référencement.
C'est zéro archi zéro les id de session dans l'url je préfère me priver de 15% de visiteurs ou bien leur dire d'activer les sessions.

Ou alors ce système est très bien, nous sommes d'accord, à la condition que les sessions ne soient créées que lors de l'identification. Mais ni ma solution ni celle de Kioob ne fonctionne pour le moment.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h35   #16
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Et bien dans ce cas la pourquoi ne pas purement et simplement retirer la session de tes URLS ?

ton session.use_trans_sid est a off au faits ?
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h42   #17
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
C'est moi qui a la plus grosse les gars, je viens de trouver la solution:

J'initialise la session dès la page identification, pour laquelle le référencement ne m'importe pas. Hop le gars s'identifie, ma session est initialisée.
Je teste avec le code de Kioob et comme la session est déjà créée, bah ce coup ci sa fonctionne.

Tant que le gars s'est pas logué, mes url sont propres.
Je vais placer une règle pour ne pas que le moteur référence les pages liées d'identification et ne suivent pas les liens que celle-ci génère avec des idsessions, sait-on jamais, dès fois que googlebot s'ouvre un compte.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h45   #18
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
Et bien dans ce cas la pourquoi ne pas purement et simplement retirer la session de tes URLS ?
Bah c'était le but de la question je crois.


Citation:
ton session.use_trans_sid est a off au faits ?
J'ai placé le résultat de mon phpinfo() 5 ou 6 posts plus haut ePoX.

Bon a priori, c'est bon mais je vais encore faire quelques tests. Puis je vais prendre un bain, j'ai les chevilles qui enflent là je sais pas pourquoi.

En espérant ne pas me rendre compte dans 30 minutes que ma solution est toute pourrie, ça sera pas la première fois
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2006, 23h58   #19
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Maintenant que ça c'est résolu j'en profite avec une question :

J'ai enlevé de firefox l'option "autoriser les sites à créer des cookies".
Je me suis connecté, php a fait son cirque en me créant un id de session dans l'url. Je m'attendais à ce que cet id reste dans l'url, les cookies étant désormais refusés.
Et bien non, comme avant les id de session ont disparu de l'url, mais la session était bien toujours ouverte.
J'ai encore pas compris un truc là... pas facile les sessions... c'est à mi chemin entre programmation et réseau, n'est-ce pas ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 00h12   #20
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
si le session id n'a pas changé, bien que les sites n'aient plus le droit de créer des coockies, les anciens ne sont pas forcément supprimés pour autant
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h28.


 
 
 
 
Partenaires

Hébergement Web