Page 1 sur 1

Variable de session + Ajax

Posté : 22 juil. 2016, 09:03
par Sohff
Bonjour,

J'essaie d'implémenter un bouton qui mettrait à jour une variable de session en utilisant ajax et l'événement onclick.
<?php
	session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" href="style.css"/>
<script language="JavaScript">

	function createInstance()
	{
        var req = null;
		if (window.XMLHttpRequest)
		{
 			req = new XMLHttpRequest();
		} 
		else if (window.ActiveXObject) 
		{
			try {
				req = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e)
			{
				try {
					req = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) 
				{
					alert("XHR not created");
				}
			}
	        }
        return req;
	};

	function storing(data, element)
	{
		element.innerHTML = data;
	}

	function submitForm(element)
	{ 
		var req =  createInstance();

		req.onreadystatechange = function()
		{ 
			if(req.readyState == 4)
			{
				if(req.status == 200)
				{
					storing(req.responseText, element);	
				}	
				else	
				{
					alert("Error: returned status code " + req.status + " " + req.statusText);
				}	
			} 
		}; 
		req.open("GET", "ajax-get.php", true); 
		req.send(null); 
	} 
</script>
</head>
<body>
<p> <span id="storage"> </span></p>
<form name="ajax" method="post" action="">
	<p>
	<input type="button" value="Envoyer"  onclick="submitForm(document.getElementById('storage'))">
	</p>
</form>	 
<?php
if(isset($_POST['download'])){	
	$_SESSION['stop_upload']=0;
        echo $_SESSION['stop_upload'];
        while($_SESSION['stop_upload']==0){
                   traitements
                   echo $_SESSION['stop_upload'];
        }
        echo $_SESSION['stop_upload'];
}	
</body>
Et voici le fichier ajax-get.php :
<?php
	$_SESSION['stop_upload'] = 1;
	echo $_SESSION['stop_upload'];
?>
J'ai réalisé des tests. Quand j'appuie sur le bouton pendant l'execution de la boucle, le fichier ajax-get.php me renvoie 1 mais le fichier principal continue de me renvoyer 0.

J'espère avoir été clair.
Merci d'avance pour vos aides et conseils.

PS : Je ne mets pas le code du formulaire qui me renvoi la méthode $_POST['download'] car sans importance pour mon problème.

Re: Variable de session + Ajax

Posté : 22 juil. 2016, 09:25
par Ryle
Bonjour,

Il te manque un session_start() dans le fichier ajax, sans lui, la variable de session ne peut pas être mise à jour :)

Re: Variable de session + Ajax

Posté : 22 juil. 2016, 09:35
par Sohff
<?php
  session_start();
  $_SESSION['stop_upload'] = 1;
  echo $_SESSION['stop_upload'];
?>
J'ai essayé mais cela ne fonctionne toujours pas.

Re: Variable de session + Ajax

Posté : 22 juil. 2016, 09:48
par @rthur
A mon avis, tu as un problème d'architecture, faire une boucle infinie en PHP pour l'affichage d'une page en attendant une action est une erreur.

Qu'est-ce que tu cherches à faire ?

Re: Variable de session + Ajax

Posté : 22 juil. 2016, 10:10
par Sohff
Le but serait que l'utilisateur puisse arrêter le traitement dans la boucle while quand il le souhaite. Pour être plus précis, la boucle while permet un upload de fichiers via ftp, ainsi l'utilisateur pourrait arrêter cette upload avant la fin.