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 :

[Sécurité] Session avec Ajax


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut [Sécurité] Session avec Ajax
    Bonjour tout le monde

    Je débute actuellement avec AJAX, pour se faire j'utilise un petit framework XHRConnection qui est très simple d'utilisation. Après que petites réalisations, je suis confronté à un petit soucis concernant les varialbes de session.

    J'ai la page principale qui contient ma balise <div> où est affiché les infos retournées. J'envoie des données via l'objet XmlHttpRequest vers une page PHP dans la quelle je réalise des différents traitements.

    Ma page principale contient une session, j'arrive à récupérer ses valeurs par l'intermédiaire $toto= $_SESSION['toto'] malheuresement je n'arrive pas mettre à jour ma variable de session de la page de traitement vers la page principale.

    De plus dans la page principale je fais un require('operation.php) qui contient de nombreuses fonctions et dans ma page de traitement je suis obligé de refaire le require('operation.php) pour pouvoir les utiliser.

    Donc en gros je voudrais savoir comment vous procéderiez pour contournez ce problème? Je vous remercie.

  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
    Salut !

    alors... il y a plusieurs choses....

    déjà, n'oublie pas que quand tu utilises AJAX, c'est une NOUVELLE requête qui est envoyé un serveur, donc un NOUVEAU script qui est lancé, sans aucun lien avec le précédent, toutes les variables ou fonctions qui ont pu exisiter dans le script qui a générer la page web qui utilise AJAX ont normalement été détruites depuis "longtemps" (au minimum plusieurs secondes je pense)

    donc il te faudra refaire les includes, connection à la BDD etc... c'est une nouvelle page que tu génère, le fait qu'elle soit appeller par AJAX n'y changera rien...

    ensuite, au sujet plus précisément des sessions, il est possible que le SID ne soit pas transmis, dans ce cas, assure toi de le transmettre manuellement, en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session_name().'='.session_id()
    (en PHP) en variables d'URL de la page appellée par AJAX

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut
    Merci du conseil Swoög

    En gros le travail que j'ai à réaliser c'est de créer un déroulement en ajax, de 4 pages php pour améliorer la fluidité de cette exécution et d'utiliser le fait qu'ajax nerecharge qu'une partie de la page. On m'a demandé de le réaliser en Ajax, donc voilà le pourquoi du comment.

    Sinon comment je devrai effectuer le travail demandé?

  4. #4
    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
    ta technique est bonne, mais tu as simplement commis quelques erreurs en utilisant AJAX

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    J'ai le même problème, et l'id de session ne semble pas permettre à mon script distant de la récupérer.

    Ma fonction d'appel ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    var XHR = new XHRConnection();  
                    XHR.setRefreshArea('magalerie-photos');
                    XHR.sendAndLoad('mapage.php?<?php echo session_name().'='.session_id(); ?>&tid="+rid+"', "GET");
                    return true;
    tid est un paramètre dont je me sers dedans.

    Et donc, mon script est bien appelé, mais quand je fais :
    => rien



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    print_r($_SESSION);
    => "Array ()"



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    session_start();
    print_r($_REQUEST);
    => Array (
    [SN44f1945725361] => 0bd98ec9e903a0fb1f630e5e49b63710
    [tid] => ycmxqupuannivxxz
    [MODxLoggingCookie] => 1262700097
    [PHPSESSID] => 5b2c76cd414bc6be5a4b5cf688b4d1aa
    )

    Sachant que j'utilise le CMS MODx, j'imagine que MODxLoggingCookie vient de lui. Sinon, mon id de session est bien transmis.. je pige pas pourquoi session_start() récupère pas tout.
    Ah oui, je n'ai aucune idée de ce à quoi la clé SN44f1945725361 correspond.


    Vous savez dans quels cas le session_start peut ne pas récupérer les variables quand PHPSESSID est transmis ?
    Merci !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Je n'ai toujours pas résolu mon problème, mais je pense que le paramètre inconnu est en fait le cookie d'un autre cms/appli (type phpMyAdmin) que j'utilise, puisque je travaille sur mon domaine de dev qui est commun à tous mes développements.
    Mais sinon, mon problème est toujours là !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Résolu !
    Bon, en fait, j'ai fini par trouver...
    C'est simplement que mon CMS a un nom de session propre, et que ma requête Ajax ne passait pas par le CMS, d'où perte de la session.

    J'ai donc résolu ça avec un simple session_name au début de mon script distant.
    Voilà

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

Discussions similaires

  1. [AJAX] Variable de session avec Ajax
    Par koloma dans le forum AJAX
    Réponses: 2
    Dernier message: 17/05/2013, 04h44
  2. Réponses: 1
    Dernier message: 29/04/2010, 08h23
  3. Creer une session avec ajax
    Par mimagyc dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/10/2008, 12h38
  4. Problème de session avec Ajax
    Par Chichoulinet dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 09/09/2008, 16h21
  5. sessions avec ajax.js et php..help!
    Par ricardvince dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2007, 00h39

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