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 :

Probleme de variable de session et xmlhttprequest [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut Probleme de variable de session et xmlhttprequest
    Bonjour à tous,

    J'ai un petit probleme que j'ai partielement résolu mais ma slution me semble plus du bricolage.

    J'ai deux page
    page1.php
    page2.php

    et un module
    module.php

    Dans mes deux pages j'ai un
    Depuis ma page1.php je fait appelle à ce module via un Et la tout marche bien.

    Cependant dans ma deuxième page, je fais appelle à mon module via xmlhttrequest, comme ceci:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    function getXhr(){
    	//Création de l'objet XmlHttpRequest
    	var xhr = null; 
    	if(window.XMLHttpRequest) // Firefox et autres
    		xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    		try {
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) {
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	else { // XMLHttpRequest non supporté par le navigateur 
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		xhr = false; 
    	}
    	return xhr;
    }
     
    function extract_price_from_db(){
    	var xhr = getXhr();
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function(){
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200){
    			leselect = xhr.responseText;
    			// On se sert de innerHTML pour rajouter les options a la liste
    			document.getElementById('id-tarif-display').innerHTML = leselect;
    			deroulant();
     
    		}
    	}
     
    	// Ici on va voir comment faire du post
    	xhr.open("POST","xmlhttprequest/module.php",true);
    	// ne pas oublier ça pour le post
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	// ne pas oublier de poster les arguments
    	// ici, l'id de l'auteur
    	sel = document.getElementById('id-tarif');
    	prices = sel.options[sel.selectedIndex].value;
    	xhr.send("prices="+prices);
    }
    Ca marche bien jusqu'a j'insère des variable de session dans ce module.
    En fait dans ce module, il n'y a pas de session_start().
    Si ca marche dans la page 1 c'est qu'il est "inclu" dans cette page.

    Ce qui n'est pas le cas dans la page 2.

    Alors pour remédier à ce problème, j'ai mis, dans mon module ceci
    Comme-ceci, quand mon module est chargé depuis la page2, les variable de session du module sont bien "utilisable".

    Mais quand je charge ma page1.php, il y a un message d'avertissement si je ne met pas le @, car session_start() est déjà déclaré dans ma premiere page. Donc il y a deux session_strat(), ce qui n'est pas possible.

    Cependant, j'aime pas trop le @, car ca ne fait que de cacher le message d'alarme.

    N'y-a-il pas une solution de tester si session_start() a déjà été exécuté?

    Un truc du genre
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset(session_start())) session_start();

    Merci pour vos idées

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Dans les pages, tu créé une variable servant de drapeau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    $session_ok=true;
    Dans le module, tu démarres la session, si la variable n'est pas définie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset($session_ok))session_start();

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Ouais c'est vrai! C'est pas si compliqué en fait.
    Merci

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

Discussions similaires

  1. probleme de variable de session
    Par scheme dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/02/2011, 13h06
  2. [Sécurité] Problème de variables de session
    Par budylove dans le forum Langage
    Réponses: 16
    Dernier message: 25/04/2006, 11h26
  3. [Sécurité] Problème de variable de session
    Par funkyfox dans le forum Langage
    Réponses: 3
    Dernier message: 19/02/2006, 17h59
  4. [Sécurité] probleme de variable de session
    Par rane dans le forum Langage
    Réponses: 4
    Dernier message: 02/02/2006, 12h19
  5. Réponses: 4
    Dernier message: 14/12/2005, 08h33

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