Bonjour,
j'ai un probleme avec XMLHttpRequest et les sessions.
Lors de l'appel à la page php par le XMLHttpRequest ma session est perdu car je ne peux pas faire de session_start(), car le header est déjà envoyé.
J'ai un warning.
j'ai une premiere page php : onload.php
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 <?php session_start() /*ouverture de session pour forum phpBB*/ //il est IMPERATIF qu'aucun texte n'ait été affiché avant cette ligne, sinon, vous aurez droit à l'erreur //Cannot modify header information - headers already sent by (output started at C:/wamp/www/singles/test.php:5) $user->session_begin(); $_SESSION['login'']= $login; echo"<script type=\"text/javascript\"> <!-- window.onload = function() { loadScript(); }; --> </script>"; ?>
dans ma js fonction.js j'ai XMLHttpRequest
la page server.php
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 function loadScript(){ var xhr_url=server.php var xhr_object = null; // declarationde la variable if(window.XMLHttpRequest){ // Firefox xhr_object = new XMLHttpRequest(); // declaration de lobjet }else if(window.ActiveXObject){ // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); // declaration de lobjet }else { // XMLHttpRequest non supporté par le navigateur alert("Your browser does'nt use XMLHTTPRequest objects..."); return; } xhr_object.open("POST", xhr_url, true); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4){ eval(xhr_object.responseText); } } xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); var data = "family="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2"; xhr_object.send(data); }
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?php session_start(); echo $_SESSION['login'']; session_write_close(); //-- close session ?>
J'ai un message d'erreur :
Warning: Cannot modify header information - headers already sent by
Car j'ai déjà ouvert une session dans ma page d'origine appelante : onload.php.
Du coup je ne peux pas récupérer les variables de session dans la page php appelée server.php.
Le probleme vient de ce que je ne peux pas mettre de session_start() ou de header() dans ma page php. Car la page d'origine appelante a déjà un header(). Celui du forum phpBB
Comment faire pour avoir les variables de session dans le fichier php appel ?
Partager