IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] Le phpsessid apparaît dans l'URL une fois puis disparaît


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    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.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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, Cours PHP, Cours JavaScript, 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)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    essaie avec ini_set, ou alors si OVH l'accepte, met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php_flag session.use_only_cookies on
    dans un .htaccess à la racine de ton site...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, 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)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Nom : tableau_session.gif
Affichages : 226
Taille : 13,0 Ko
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  8. #8
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Essayes plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  10. #10
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    "Chez moi ça marche".

    Et il n'y a évidement aucun paramètre à fournir à session_name() !
    Google is watching you !

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  12. #12
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    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

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Salut ePoX,

    Avant de reprendre ce que tu me dis, voilà la réponse d'OVH :
    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 :
    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.

    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.

    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.

  14. #14
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    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

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  16. #16
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    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 ?

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.


    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.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  20. #20
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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, Cours PHP, Cours JavaScript, 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)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PHP 5.4] Perte session ou cookie sur IE avec "-" dans l'url
    Par nogara45 dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2015, 10h34
  2. update une fois puis insert
    Par jerome572 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 16/09/2011, 10h21
  3. [VxiR2] Changer un type de colonne dans la DB une fois l'univers créé
    Par blured dans le forum Designer
    Réponses: 1
    Dernier message: 02/04/2009, 09h12
  4. Comment rechercher dans les tables une valeur puis la modifier ?
    Par arnaudperfect dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/07/2008, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo