session_id en POST

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : session_id en POST

par leiopar » 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. ;)

par Invité » 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());

?>

par Sékiltoyai » 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()....)

session_id en POST

par leiopar » 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 ???