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
Code : Sélectionner tout - Visualiser dans une fenêtre à part session_start()Et la tout marche bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part include()
Cependant dans ma deuxième page, je fais appelle à mon module via xmlhttrequest, comme ceci:
Ca marche bien jusqu'a j'insère des variable de session dans ce module.
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); }
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".
Code : Sélectionner tout - Visualiser dans une fenêtre à part @session_start()
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![]()
Partager