session_id en POST

Eléphanteau du PHP | 20 Messages

06 juil. 2007, 16:58

bonjour

Je bute sur un problème de session.
Je voudrais passer l'identifiant de session par la méthode "POST" (pas que cookie et pas d'altération d'url siouplé)

voici donc mon proto (fichier php sur "http://fvpatwds.tuxfamily.org/"):

Code : Tout sélectionner

<?PHP ini_set( 'session.use_cookies', 0 ); if (isset($_POST['SESSID']) && session_id($_POST['SESSID'])){ session_start(); print("session existante<br/>"); $_SESSION['compt']+=1; print($_SESSION['compt']."<br/>"); print('<form method="post" action="'.$_SERVER["PHP_SELF"].'">'); print('<input type="hidden" name="SESSID" VALUE="'.session_id().'">'); print('<input type="submit" name="upload" class="lien" value="continuer"></form>'); }else{ session_start(); $_SESSION['compt']=0; print('<form method="post" action="'.$_SERVER["PHP_SELF"].'">'); print('<input type="hidden" name="SESSID" VALUE="'.session_id().'">'); print('<input type="submit" name="upload" class="lien" value="creer"></form>'); } print(session_id()); ?>
Ce que j'atent de ce bout de code c'est qu'il se comporte comme un compteur.
Le fichier session ce créer bien dans le répertoires "TMP", il est bien créer avec une valeur "compt" mais l'incrémentassions ne marche pas !
Pourtant l'id de la session et bien transmise... là je sèche !

Des idées ???
Modifié en dernier par leiopar le 09 juil. 2007, 15:46, modifié 3 fois.

ViPHP
ViPHP | 5924 Messages

06 juil. 2007, 18:13

Dans les 2 cas de ton if, tu fais un session_start(). Fais donc un session_start() plutôt au début de ton script (genre juste après le ini_set()....)

Invité
Invité n'ayant pas de compte PHPfrance

06 juil. 2007, 19:33

Avec le "session_start()" avant le "session_id($_POST['SESSID'])" les fichier sess_... se multipli comme des lapins et "$_SESSION['compt']" n'est toujour pas incrémenté!(en fait ca créer même une érreur)
<?PHP
ini_set( 'session.use_cookies', 0 );
session_start();
if (isset($_POST['SESSID']) && session_id($_POST['SESSID'])){
	//session_start();
	print("session existante<br/>");
	$_SESSION['compt']+=1;
	print($_SESSION['compt']."<br/>");
	print('<form method="post" action="'.$_SERVER["PHP_SELF"].'">');
	print('<input type="hidden" name="SESSID" VALUE="'.session_id().'">');
	print('<input type="submit" name="upload" class="lien" value="continuer"></form>');
}else{
	//session_start();
	$_SESSION['compt']=0;
	print('<form method="post" action="'.$_SERVER["PHP_SELF"].'">');
	print('<input type="hidden" name="SESSID" VALUE="'.session_id().'">');
	print('<input type="submit" name="upload" class="lien" value="creer"></form>');
}
print(session_name());

?>

Eléphanteau du PHP | 20 Messages

09 juil. 2007, 08:53

bon... en sortant le "session_id" de la condition de départ, tout rentre dans l'ordre :
<?PHP
ini_set( 'session.use_cookies', 0 );
if (isset($_POST['SESSID'])){
	session_id($_POST['SESSID']);
	session_start();
	print("session existante<br/>");
	$_SESSION['compt']+=1;
	print($_SESSION['compt']."<br/>");
	print('<form method="post" action="'.$_SERVER["PHP_SELF"].'">');
	print('<input type="hidden" name="SESSID" VALUE="'.session_id().'">');
	print('<input type="submit" name="upload" class="lien" value="continuer"></form>');
}else{
	session_start();
	$_SESSION['compt']=0;
	print('<form method="post" action="'.$_SERVER["PHP_SELF"].'">');
	print('<input type="hidden" name="SESSID" VALUE="'.session_id().'">');
	print('<input type="submit" name="upload" class="lien" value="creer"></form>');
}
print(session_id());
?>
Je vais donc tester l'existence de la session de façon diférante (pour savoir si elle n'a pas expiré)

Merci pour ces idées. ;)