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:
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:
if(!isset(session_start())) session_start();
Merci pour vos idées :D