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] Transmission du PHPSESSID dans url


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 30
    Points
    30
    Par défaut [Cookies] Transmission du PHPSESSID dans url
    Bonjour à tous,

    j'ai une petite colle qui m'occupe depuis plusieurs jours, je pense que vous pourrez m'aider

    Dans ma page index.php :

    je créé une session avec session_start();
    j'initialise par exemple $_SESSION['test']=1;

    J'ai besoin de transmettre la session via l'url à une page externe (que j'utilise dans index.php - ajax) et je fais comme ça : mapage.php?PHPSESSID=session_id();

    vu que j'ai transmis l'id de session, je m'attendais à ce que mapage.php puisse avoir accès à la session or ce n'est pas le cas, dans mapage.php j'ai
    session_start();
    print $_SESSION['test'] //ne renvoie rien , la session n'est pas conservé

    Que se passe-t-il ?
    1- je n'applique pas la bonne méthode de transmission ?
    2 - mon serveur refuse le passage de session en url ?

    Si vous avez des idées, je suis preneur !!

    Merci à vous,

    Tibo

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Quelle est la raison de cette transmission manuelle, puisque PHP s'en charge en temps normal ? Quelle est la configuration du serveur pour la transmission (cookie et/ou use_trans_sid) ?

    Pour être portable, je vous recommande d'utiliser : 'mapage.php?' . session_name() . '=' . session_id(); et n'oubliez pas de récupérer cet identifiant et de le passer à session_start comme paramètre.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    pas mal le coup de session_name ?

    Pkoi je veux transmettre l'id de session car je construits le site comme une API cad que j'utilise :

    $url=$Main->getRoute(700,array(session_name()=>session_id()));
    $xml = new SimpleXMLElement($url, NULL, TRUE);

    la page 700 doit pouvoir être accessible de l'extérieur pour peu que l'on est appliqué une méthode login pour avoir un id session valide.

    voici le fichier ini que j'utilise

    session.auto_start Off Off
    session.bug_compat_42 Off Off
    session.bug_compat_warn On On
    session.cache_expire 180 180
    session.cache_limiter nocache nocache
    session.cookie_domain no value no value
    session.cookie_httponly Off Off
    session.cookie_lifetime 0 0
    session.cookie_path / /
    session.cookie_secure Off Off
    session.entropy_file no value no value
    session.entropy_length 0 0
    session.gc_divisor 1000 1000
    session.gc_maxlifetime 1440 1440
    session.gc_probability 1 1
    session.hash_bits_per_character 5 5
    session.hash_function 0 0
    session.name PHPSESSID PHPSESSID
    session.referer_check no value no value
    session.save_handler files files
    session.save_path C:\PROGRA~1\EasyPHP\\tmp\ C:\PROGRA~1\EasyPHP\\tmp\
    session.serialize_handler php php
    session.use_cookies On On
    session.use_only_cookies Off Off
    session.use_trans_sid 0 0

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par tiboel
    2 - mon serveur refuse le passage de session en url ?
    Oui du fait de session.use_trans_sid à Off mais vous pouvez le faire "manuellement" comme vous tentez de le faire.

    Citation Envoyé par tiboel
    1- je n'applique pas la bonne méthode de transmission ?
    Oui comme dit plus haut, sur la page de "réception", il faudrait pour récupérer la session à partir de son identifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_GET[session_name()])) {
        session_start($_GET[session_name()]);
    } else {
        // Arrêter le script ?
    }
    Ces techniques facilitent le vol de session du fait d'une transmission visible de l'identifiant, mais dans le cadre d'une API c'est peut être déjà moins grave.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Merci je vais essayer, c'est la première chose auquel j'avais pensé mais que je n'avais pas essayé car la doc php donne :

    bool session_start ( void )

    session_start() crée une session (ou restaure celle trouvée sur le serveur, via l'identifiant de session passé dans une requête GET, POST ou par un cookie).

    donc je pensais qu'il n'était pas nécessaire de récupérer de passe le session id en param de session_start qui n'en accepte pas à priori

    Merci !!

    Tibo

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Oui, désolé, c'est une erreur de ma part. C'est session_id qu'il faut appeler avant session_start pour fixer l'identifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_GET[session_name()])) {
        session_id($_GET[session_name()]);
    } else {
        // Arrêter le script ?
    }
    session_start();

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Ca me semble plus propre à intégrer dans mon script !!!

    Merci beaucoup en tout cas et encore bravo pour la réactivité ,

    Tibo

+ Répondre à la discussion
Cette discussion est résolue.

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, 11h34
  2. Eviter PHPSESSID dans une URL
    Par cloridriks dans le forum Langage
    Réponses: 4
    Dernier message: 30/10/2009, 00h54
  3. [AJAX] Transmission de valeurs dans l'URL
    Par chrislav dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/02/2009, 17h30
  4. transmission de variable dans url
    Par heteroclite dans le forum Langage
    Réponses: 13
    Dernier message: 15/09/2006, 21h29
  5. [JSP] carac & dans URL et XML
    Par c.tranquille dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 24/07/2003, 16h00

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