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. #21
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    deux questions :

    les moteurs de recherche ne se connecteront jamais, c'est bien ca?
    alors pourquoi te soucier de ce qui peut se passer une fois connecté?

    les robots s'identifient toujours, PHP peut savoir si c'est un robot, en lisant les variables que le client a envoyé...
    je ne sait plus laquele, mais fait une recherche la dessus.

    et la solution, AMHA, pourrait se resumer ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI (estRobot) alors
       //soit on fait quand meme un session start, mias on se debrouille pour réécrire l'url
    SINON
     session_start()
    FINSI
    voila, en esperant que ca aide

  2. #22
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par psychoBob
    Et bien non, comme avant les id de session ont disparu de l'url, mais la session était bien toujours ouverte.
    Pour info, ton numéro de session peut aussi etre transmis par un champ hidden dans tes formulaires, automatiquement créé par php.

  3. #23
    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
    deux questions :

    les moteurs de recherche ne se connecteront jamais, c'est bien ca?
    alors pourquoi te soucier de ce qui peut se passer une fois connecté?
    les robots s'identifient toujours, PHP peut savoir si c'est un robot, en lisant les variables que le client a envoyé...
    je ne sait plus laquele, mais fait une recherche la dessus.
    Les robots s'identifient toujours ? Tu veux dire qu'ils sont identifiables ou bien qu'ils s'identifient/se connecte ? Je crois que tu veux dire que l'on peut les reconnaitre, sans quoi il va falloir m'expliquer comment google bot va s'ouvrir un compte et remplir ensuite les champs mail et mot de passe. Car il n'y a qu'à partir de là que la session est créée. Donc à priori ma solution est bonne.
    Mais peut-être, si je comprend bien tu en proposes une autre sans dire pour tant que la mienne est mauvaise, c'est cela ?

    et la solution, AMHA, pourrait se resumer ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI (estRobot) alors
       //soit on fait quand meme un session start, mias on se debrouille pour réécrire l'url
    SINON
     session_start()
    FINSI
    LA solution ou UNE solution, tu me colles un doute maintenant.
    En fait je pense que compte tenu du fonctionnement de mon site, ma solution est la bonne, ou alors j'ai vraiment raté un épisode notamment sur les robots. La tienne est peut être plus générale, non (et sans doute tout aussi valable).
    Mais mon système n'est-il pas suffisant ?
    C'est pas parce que j'ai tort que vous avez raison.

  4. #24
    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
    Citation Envoyé par Mr N.
    Pour info, ton numéro de session peut aussi etre transmis par un champ hidden dans tes formulaires, automatiquement créé par php.
    Qui nécessite un submitt non ? Ou alors un truc lourd qui à chaque clic sur un lien html déclenche le submitt via javascript c'est ça ?
    Déjà si javascript est pas activé chez le client c'est fichu, mais sinon en POST ça ne serait pas une méthode plus sur que par l'url ou par cookie ?
    (Note: Y'a Kioob qui me dit que les sessions utilisent toujours les cookies, alors les cookies de session sans doute, je mélange tout là ou alors j'ai pas pigé ce qu'il me dit).
    C'est pas parce que j'ai tort que vous avez raison.

  5. #25
    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
    Le problème hansaplast c'est que c'est compliqué, enfin d'après ce que j'ai pu en lire, de maintenir une liste qui référence les moteurs de recherche. Que ce soit par l'ip, l'User agent ou autre.

    Mais sinon c'est une solution qui serait top en effet.

    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 ?
    Ré essaie en vidant les cookies au préalable à tout hasard.

    bbye

  6. #26
    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
    :s Pour moi l'idéal reste quand même d'initialiser la session qu'une fois que l'utilisateur est loggé... Et ça c'est très simple : on force le session_start() au moment où le formulaire est validé, et après on ne fait le session_start() que lorsque le PHPSESSID est envoyé par l'utilisateur (que ce soit soit en cookie ou via URL... donc $_REQUEST pour que ça marche toujours, ou $_COOKIE pour la sécurité).
    Google is watching you !

  7. #27
    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
    Pour moi l'idéal reste quand même d'initialiser la session qu'une fois que l'utilisateur est loggé...
    Mais c'est ça que j'ai fait eeeeeeee !!!!!! Je m'exprime comme une patate ou quoi ?

    Bon je réexplique :
    Un visiteur lambda se pointe sur le site. Y'a aucune session d'ouverte donc pas d'id dans les url.
    Le robot se pointe, c'est pareil pour lui, il référence tranquille mes url rewrités pour lui.
    Le visiteur clique sur identification.php, il remplit le form, il arrive sur compte.php.
    Là la session est initialisée par session_start(), en haut de compte.php.
    L'identification a créé des variables qui sont passées correctement dans la session, puisqu'elle vient d'être ouverte.
    Là, sur la page compte.php on a des liens avec des id de session puisque php ne sait pas encore comment il va les gérer, c'était tout le problème. Mais maintenant on s'en fiche, les robots ne verront jamais compte.php puisqu'ils ne s'identifieront pas et qu'elle est inaccessible autrement.
    Donc ils n'auront jamais d'id de session dans l'url, puisque le session_start() ne sera jamais fait puisque dans les autres pages j'ai ça, taratata :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if( isset( $_COOKIE[ session_name() ] ) )
    {
        session_start();
    }
    ?>
    Une objection ? Par exemple, je me demandais: si le client refuse les cookies, avec ce isset($_COOKIE[session_name()]) la session risque de ne pas être initialisée, non ?
    C'est pas parce que j'ai tort que vous avez raison.

  8. #28
    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
    Yep, ça me semble "tout bon".

    Par exemple, je me demandais: si le client refuse les cookies, avec ce isset($_COOKIE[session_name()]) la session risque de ne pas être initialisée, non ?
    Bah ça te permet de forcer la fonction "use_only_cookies" du coup

    Sinon, comme dit plus haut, tu peux utiliser $_REQUEST à la place.
    Google is watching you !

  9. #29
    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 si je fais cela alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if( isset( $_COOKIE[ session_name() ] ) OR isset($_REQUEST[session_name()]))
    {
        session_start();
    }
    ?>
    C'est valable pour ceux dont les navigateurs refusent les cookies ?

    Et au fait quand je détruit ma session, je fais juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION = array();session_destroy();
    Mais ça ne détruit pas le cookie aussi, alors je fais comment pour le détruire, le dit cookie ?
    C'est pas parce que j'ai tort que vous avez raison.

  10. #30
    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
    regarde d'abord à quoi sert $_REQUEST avant de sortir de tels trucs....
    Google is watching you !

  11. #31
    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'était pour voir si vous suiviez.

    Bon alors $_REQUEST est plus général et permet donc de prendre en compte tous les cas de figure : cookie accepté par le client ou id de session qui passe par l'url au cas ou php peut pas les expédier en cookie.
    Vous comprenez ?

    Bon alors je vous expliquerai bien comment on fait pour détruire un cookie en plus de la session au moment de la déconnexion, mais si ça se trouve vous savez le faire.
    Non ? Bon alors, expliquez-moi comment vous feriez et puis je vous dirais si c'est bon.
    C'est pas parce que j'ai tort que vous avez raison.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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