[AJAX] XMLHttpRequest et perte de session
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:
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
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
|
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);
} |
la page server.php
Code:
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:aie:
Comment faire pour avoir les variables de session dans le fichier php appel ?