Ajax et init variables de session php

kofi_kari_kari -  
 Sudoers -
Bonjour,

Je réalise un petit jeu chronométré en utilisant ajax et php. Le jeu se déroule en 3 phases et à chaque phase correspond une page php.

La page 1 présente le jeu et possède un bouton "Start". Au moment où le joueur clique sur le
bouton "Start", je déclenche un script javascript qui:
- lance un script php qui s'occupe de créer et d'initialiser des variables de session utiles
par la suite
- redirige le joueur sur la page 2 du jeu

Mon problème est le suivant:
J'ai de l'instabilité avec ma mise à jour de variable de session. Sous Firefox, ça ne marche pas toujours très bien: parfois les variables sont initialisées, parfois elles ne le sont pas.
Sur chrome, ça ne marche carrément jamais.

J'ai essayé d'initialiser directement dans ma page 1 php mes variables de session (plutôt que de passer par un script js) et tout fonctionne parfaitement.

Tout se passe comme si le javascript ne laissait pas le temps à php de créer et d'initialiser
les variables de session.

Avez vous déjà été confronté à un tel problème et avez vous une solution à me proposer? Il va sans dire que je voudrais faire marcher la solution d'initialisation avec javascript.

Voici un peu de code pour "illustrer" mon problème:

Page 1 du php
<?php
	//include_once "php/phpGameInit.php";
?>
<p>
	You'll be playing to the free answers game.
	You'll have a limited amount of time per questions.
	Are you ready to start?
</p>
<!--
Code for the button to redirect on the game page
and to start the game
-->
<INPUT
	type="submit"
	value="Start"
	onClick="startGame()"
>

<script src="function.js" type="text/javascript">
</script>


Javascirpt

var phpFolder = "./php/";
var gameMiddlePage="game_free_answers.php";
var phpGameInit = "phpGameInit.php";

function startGame()
{

	window.location.href=gameMiddlePage;
	generateRequest("empty", phpGameInit);
}

function generateRequest(callBackFunction, phpScript, toPost)
{	
	var xmlHttp = generateXmlhttp();
	xmlHttp.onreadystatechange=function()
	{
		if (xmlHttp.readyState==4 && (xmlHttp.status == 200 || xmlHttp.status == 0))
		{
			if(callBackFunction!="empty")
			{
				callBackFunction(xmlHttp.responseText);
			}
		}
	}
	if(toPost)
	{
		xmlHttp.open("POST",phpFolder.concat(phpScript),true);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		for(var i=0; i<toPost.length; i++)
		{
			xmlHttp.send(toPost[i]);
		}
	}
	else
	{
		xmlHttp.open("GET",phpFolder.concat(phpScript),true);
		xmlHttp.send(null);
	}
}



Le gameInit.php n'est qu'un code qui initialise des variables de session. Il y en a pas mal dedans (genre une grosse vingtaine dont un tableau rempli via une requête à une base de données)

Merci beaucoup pour votre aide.

Bien cordialement

1 réponse

Sudoers
 
var data= "PHPSESSID=<?php echo $_COOKIE['PHPSESSID']?>";
xhr_object.open("GET", "ajax.php?"+data,false);
xhr_object.send(data);

ou bien :

xhr_object.setRequestHeader("Cookie", "<?php echo $_COOKIE['PHPSESSID']?>");
0