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

AJAX Discussion :

[AJAX] AJAX & Session php problème.


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut [AJAX] AJAX & Session php problème.
    Bonjour,

    Je viens à vous car j'ai un problème que même mes recherches n'ont pas réussi à résoudre.
    Succinctement, le problème est que je n'arrive pas à modifier la valeur d'une session php appelé en AJAX. Cependant l'affichage de la valeur de la session ne pose pas de problème.

    Je fais de l'AJAX par l'intermediaire de la fonction générique (ou pas ) submitForm() ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function submitForm(url,param,idModif){ 
        var xhr; 
        try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
        catch (e) 
        {
            try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
            catch (e2) 
            {
              try {  xhr = new XMLHttpRequest();     }
              catch (e3) {  xhr = false;   }
            }
        }
        xhr.onreadystatechange  = function()
        { 
             if(xhr.readyState  == 4)
             {
                  if(xhr.status  == 200) 
                     document.getElementById(idModif).innerHTML = xhr.responseText; 
                  else 
                     document.ajax.dyn="Error code " + xhr.status;
             }
        }; 
       xhr.open( "POST", url,  true); 
       xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
       xhr.send(param);
    }
    J'ai une balise HTML select avec comme attribut: onChange="submitForm(...)".
    lors du changement de cette balise, tout ce passe correctement, et j'affiche:
    un tableau de valeur et
    un bouton <type="button" value="GO" onClick="submitForm(...)"/>

    Tous ça pour dire que j'appelle deux fois de suite des pages par l'intermédiaire de la fonction submitForm en AJAX, ce qui est peut être la source de mon problème.

    Le problème est que lorsque je clique sur le bouton "GO" tout mon script php s'éffectue correctement sauf les sessions.

    Je fait un session_start() au début de ma page php donc logiquement, les sessions devraient être actives.
    Mais quand je veux MODIFIER le contenu de l'une d'elle, ça ne fonctionne pas.

    Par contre, quand je fais une echo $_SESSION["maSession"]; ça fonctionne...

    Le script php que je veux effectuer ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
            session_start();
            if(isset($_REQUEST["img"])){
                    echo '<img src="images/ok.png"" alt="ok"/>';
            }else{
                    if($_REQUEST["AllerOuRetour"]=="Aller"){
                            $_SESSION["ALLER"]=$_REQUEST["ligneFavory"];
                    }else{
                            $_SESSION["RETOUR"]=$_REQUEST["ligneFavory"];
                    }
            }
    ?>
    J'ai vu sur d'autre sujet qu'il fallait faire un session_write_close(); mais même si je rajoute ça ça ne change rien au problème, je ne peut pas modifier la valeur de ma session.

    Auriez vous des idées sur la source du problème ? Et pourquoi pas, une méthode pour le résoudre..

    En espérant avoir été clair, merci pour vos réponses,

    Aurélien

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Tu dois mettre un echo pour envoyer un Text vers le client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if($_REQUEST["AllerOuRetour"]=="Aller"){
    			$_SESSION["ALLER"]=$_REQUEST["ligneFavory"];
    			echo $_SESSION["ALLER"];
    		}else{
    			$_SESSION["RETOUR"]=$_REQUEST["ligneFavory"];
    			echo $_SESSION["RETOUR"];
    		}

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Merci de ta réponse mais ce n'est pas le problème.

    Si je met ça je vais retourner la valeur de $_SESSION["ALLER"] ou $_SESSION["RETOUR"]

    hors je veux modifier le contenu de la session.
    d'où le $_SESSION["ALLER"]= $variable.

    Aurélien

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Pourquoi utiliser $_REQUEST["img"] et non pas $_POST?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_POST['AllerOuRetour'])&&($_POST["AllerOuRetour"]=="Aller")){
    			$_SESSION["ALLER"]=$_POST["ligneFavory"];
    		}else{
    			$_SESSION["RETOUR"]=$_POST["ligneFavory"];
    		}
    On peut voir l'appelle de la fonction submitForm(url,param,idModif), la paramètre param surtout.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Ouep, ci dessous (appelé en php donc y a des antislash en plus):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'onClick="submitForm(\'AJAX_ajouter_favory.php\',\'utilisateur='.$_SESSION["ID_USER"].'&ligneFavory=\'+document.getElementById(\'ligne_retour\').value+\'&AllerOuRetour=Retour\',\'img_favory_retour\');'

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Pourquoi utiliser $_REQUEST["img"] et non pas $_POST?
    Pour le moment je met tout en REQUEST, je modifierais après. Mais je sais que c'est une faille

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    On peut voir le Html généré et le formulaire.
    PS: essaye de mettre les attributs en minuscule ==>onclick (le problème n'est pas là)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    On peut voir le Html généré et le formulaire.
    PS: essaye de mettre les attributs en minuscule ==>onclick (le problème n'est pas là)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form action="" method="POST" name="aller">
    	<select id="ligne_aller" name="ligne" 
    		onClick="visible_trajets();" 
    		onChange="submitForm('AJAX_liste_trajet.php','ligne='+this.value+'&AllerOuRetour=Aller','liste_trajet_aller');">
    		<option value=7>marseille / paris</option>
    		<option value=12>presque paris marseille</option>
    		<option value=3>Vitrolles lyon</option>
    	</select>
    	<input type="button" class="submit" id="btn_favory_aller" value="C'est mon aller favori" 
    		onClick="submitForm('AJAX_ajouter_favory.php','utilisateur=57&ligneFavory='+document.getElementById('ligne_aller').value+'&AllerOuRetour=Aller','img_favory_aller');"/>
    	<span id="img_favory_aller"></span>		
    </form>
    Voila pour le HTML. par contre c'est ça le formulaire que tu voulais ?

  9. #9
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par prosciuto Voir le message
    Je fait un session_start() au début de ma page php donc logiquement, les sessions devraient être actives.
    Elles le sont, mais comme tu ne transmets pas avec ta requête AJAX l'ID de la session courante (normalement conservé côté client dans un cookie nommé PHPSESSID), c'est une nouvelle session vierge qui est créée à chaque fois. C'est pour cela que les valeurs stockées dans $_SESSION ne sont pas conservées entre chaque requête.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par GrandFather Voir le message
    Elles le sont, mais comme tu ne transmets pas avec ta requête AJAX l'ID de la session courante (normalement conservé côté client dans un cookie nommé PHPSESSID), c'est une nouvelle session vierge qui est créée à chaque fois. C'est pour cela que les valeurs stockées dans $_SESSION ne sont pas conservées entre chaque requête.
    Salut, j'ai gérer cela, j'ai virer le deuxième session_start(), du coup j'ai le même sessionID sur chaque page.
    Maintenant j'ai un autre problème mais je ne comprend pas trop d'ou ça vient, je reviendrais vous donner les problèmes et solutions que j'ai eu.

Discussions similaires

  1. [AJAX] Authentification PHP-Ajax avec SESSION PHP
    Par llaffont dans le forum Contribuez
    Réponses: 2
    Dernier message: 09/08/2012, 16h26
  2. Authentification PHP-Ajax avec SESSION PHP
    Par llaffont dans le forum Langage
    Réponses: 0
    Dernier message: 23/11/2010, 15h11
  3. Session php problème récupération
    Par Meloooo dans le forum Langage
    Réponses: 8
    Dernier message: 23/04/2009, 16h47
  4. [AJAX] Ajax encodeuri et php utf8_decode
    Par senacle dans le forum AJAX
    Réponses: 7
    Dernier message: 17/03/2009, 13h13
  5. [AJAX] Ajax et requete php
    Par absurdsystem dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/04/2008, 16h46

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