par
Cyrano » 25 sept. 2005, 17:26
Seulement, ta procedure indiquerai (sauf si je me trompe , dans ce cas pardon...) qui si je suis allé jusqu'à l'étape 6 et qu'ensuite je reviens à la 3. depuis cette page je devrais refaire dans l'ordre la 4,5 puis 6 qui ont dejà été visitée avant d'aller à l'etape 7.
Pas forcément: en début de fichier, tu testes si la valeur de la variable de session est inférieure à la valeur de l'étape, pas supérieure.
Le principe:
-1- au début de chaque fichier d'étape, tu initialises une variable indiquant quelle étape il représente : $fichier_etape = 1 pour le premier, = 2 pour le second etc...
-2- tu initialises une variable $_SESSION['etape'] : à l'étape 1 , tu lui affectes la valeur 1;
-3- en passant à l'étape 2, tu modifie la valeur: $_SESSION['etape'] = 2; et ainsi de suite pour chaque étape.
Mais tu fais d'abord un test (à partir de l'étape 2 seulement):
if(isset($_SESSION['etape']) && $_SESSION['etape'] < $fichier_etape)
{
// à ce stade, c'est ok, l'étape 1 a été franchie: on peut incrémenter la variable
$_SESSION['etape'] = $fichier_etape;
}
elseif(isset($_SESSION['etape']) && $_SESSION['etape'] > $fichier_etape)
{
/* Là, il y a une tentative pour sauter une ou plusieurs étape: on redirige vers la dernière étape autorisée */
header("Location: url/etape". $_SESSION['etape']);
}
else
{
/* Là, il y a une tentative pour sauter une étape sans même passer par le début: on redirige vers la première étape */
header("Location: url/etape1");
}
Alors c'est très sommaire, il faudra sans doute affiner les contrôles,mais c'est le principe général.
Jamais tu ne décrémentes la variable, donc quelqun à l'étape 7 qui revient à la 3 pourra revenir sans problème à la 7, mais sera redirigé automatiquement vers la 7 s'il tente de sauter à la 10 en modifiant manuellement l'url.
Est-ce que c'est plus clair comme ça ?
[quote="mickeymick"]Seulement, ta procedure indiquerai (sauf si je me trompe , dans ce cas pardon...) qui si je suis allé jusqu'à l'étape 6 et qu'ensuite je reviens à la 3. depuis cette page je devrais refaire dans l'ordre la 4,5 puis 6 qui ont dejà été visitée avant d'aller à l'etape 7.[/quote]
Pas forcément: en début de fichier, tu testes si la valeur de la variable de session est inférieure à la valeur de l'étape, pas supérieure.
Le principe:
-1- au début de chaque fichier d'étape, tu initialises une variable indiquant quelle étape il représente : $fichier_etape = 1 pour le premier, = 2 pour le second etc...
-2- tu initialises une variable $_SESSION['etape'] : à l'étape 1 , tu lui affectes la valeur 1;
-3- en passant à l'étape 2, tu modifie la valeur: $_SESSION['etape'] = 2; et ainsi de suite pour chaque étape.
Mais tu fais d'abord un test (à partir de l'étape 2 seulement):
[php]if(isset($_SESSION['etape']) && $_SESSION['etape'] < $fichier_etape)
{
// à ce stade, c'est ok, l'étape 1 a été franchie: on peut incrémenter la variable
$_SESSION['etape'] = $fichier_etape;
}
elseif(isset($_SESSION['etape']) && $_SESSION['etape'] > $fichier_etape)
{
/* Là, il y a une tentative pour sauter une ou plusieurs étape: on redirige vers la dernière étape autorisée */
header("Location: url/etape". $_SESSION['etape']);
}
else
{
/* Là, il y a une tentative pour sauter une étape sans même passer par le début: on redirige vers la première étape */
header("Location: url/etape1");
}
[/php]
Alors c'est très sommaire, il faudra sans doute affiner les contrôles,mais c'est le principe général.
Jamais tu ne décrémentes la variable, donc quelqun à l'étape 7 qui revient à la 3 pourra revenir sans problème à la 7, mais sera redirigé automatiquement vers la 7 s'il tente de sauter à la 10 en modifiant manuellement l'url.
Est-ce que c'est plus clair comme ça ?