demande de procedure sur un code de navigation etape / etape

mickeymick
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 16:23

bonjour à tous,

voilà je débute en php et j'ai un p'tit soucis.

je fais un site qui comporte une navigation restreinte et linéaire. c.a.d que j'arrive sur l'etape 0 ou mes liens et mes images s'initialisent. mais seul l'étape 1 est accessible. ainsi quand je suis sur l'etape1 seul la deux est accessible. etc. vous voyez le système ?

j'ai 10 étapes en tout et pour chaqu'une d'elle 3 images (off, roll , actif). et je bloque sur le code qui me permettra de faire fonctionner ma navigation.

si quelqu'un d'entre vous peux me donner des conseils ou a un exemple de code je suis preneur.

Merci de votre aide à tous.

Michael.

Mammouth du PHP | 19672 Messages

25 sept. 2005, 16:40

Ben apparemment, le truc est simple: on ne doit trouver le lien vers l'étape 2 QUE dans l'étape 1 (ou l'étape 3 pour un retour), celui vers l'étape 3 QUE dans l'étape 2 et ainsi de suite.

Ensuite, pour éviter que des petits futés sautent à l'étape 10 sans passer par les précédentes en mettant l'url à la main, utilise une session. initialise une variable de session avec le numéro de l'étape, du genre
$_SESSION['etape'] = 1;
En début de chacun des fichier, tu testes la valeur de cette variable et si elle est inférieure à la valeur de l'étape du fichier appelé, tu rediriges avec header() vers l'étape correspondant au numéro enregistré dans la variable. Donc l'internaute qui essaye d'aller directement à la fin sans passer par la 1 devra être redirigé automatiquement vers l'étape 1.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

mickeymick
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 17:03

tout d'abord merci bcp pour ta réponse.

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.

je vous post un essai que je suis en train de faire, si ca peux vous aider a mieux comprendre mon problème.

$intro = $HTTP_GET_VARS['intro'];
$etape1 = $HTTP_GET_VARS['etape1'];
$etape2 = $HTTP_GET_VARS['etape2'];
$etape3 = $HTTP_GET_VARS['etape3'];
$etape4 = $HTTP_GET_VARS['etape4'];
$etape5 = $HTTP_GET_VARS['etape5'];
$etape6 = $HTTP_GET_VARS['etape6'];
$etape7 = $HTTP_GET_VARS['etape7'];
$etape8 = $HTTP_GET_VARS['etape8'];
$etape9 = $HTTP_GET_VARS['etape9'];
//------------------------------------------------ on definit le tableau pour l'activation des images --- ok
$tab_nav_ok[0] = "img/nav/nav_intro_ok.gif";
$tab_nav_ok[1] = "img/nav/nav_etape1_ok.gif";
$tab_nav_ok[2] = "img/nav/nav_etape2_ok.gif";
$tab_nav_ok[3] = "img/nav/nav_etape3_on.gif";
$tab_nav_ok[4] = "img/nav/nav_etape4_ok.gif";
$tab_nav_ok[5] = "img/nav/nav_etape5_ok.gif";
$tab_nav_ok[6] = "img/nav/nav_etape6_ok.gif";
$tab_nav_ok[7] = "img/nav/nav_etape7_ok.gif";
$tab_nav_ok[8] = "img/nav/nav_etape8_ok.gif";
$tab_nav_ok[9] = "img/nav/nav_etape9_ok.gif";
//------------------------------------------------- on definit le tableau pour l'activation des images --- on
$tab_nav_on[0] = "img/nav/nav_intro_on.gif";
$tab_nav_on[1] = "img/nav/nav_etape1_on.gif";
$tab_nav_on[2] = "img/nav/nav_etape2_on.gif";
$tab_nav_on[3] = "img/nav/nav_etape3_on.gif";
$tab_nav_on[4] = "img/nav/nav_etape4_on.gif";
$tab_nav_on[5] = "img/nav/nav_etape5_on.gif";
$tab_nav_on[6] = "img/nav/nav_etape6_on.gif";
$tab_nav_on[7] = "img/nav/nav_etape7_on.gif";
$tab_nav_on[8] = "img/nav/nav_etape8_on.gif";
$tab_nav_on[9] = "img/nav/nav_etape9_on.gif";
//------------------------------------------------- on definit le tableau pour l'activation des images --- off
$tab_nav_off[0] = "img/nav/nav_intro_off.gif";
$tab_nav_off[1] = "img/nav/nav_etape1_off.gif";
$tab_nav_off[2] = "img/nav/nav_etape2_off.gif";
$tab_nav_off[3] = "img/nav/nav_etape3_off.gif";
$tab_nav_off[4] = "img/nav/nav_etape4_off.gif";
$tab_nav_off[5] = "img/nav/nav_etape5_off.gif";
$tab_nav_off[6] = "img/nav/nav_etape6_off.gif";
$tab_nav_off[7] = "img/nav/nav_etape7_off.gif";
$tab_nav_off[8] = "img/nav/nav_etape8_off.gif";
$tab_nav_off[9] = "img/nav/nav_etape9_off.gif";
//------------------------------------------------- on definit le tableau pour l'activation des liens
$tab_liens[0] = "intro.php?page_status=intro";
$tab_liens[1] = "etape1.php?page_status=etape1";
$tab_liens[2] = "etape2.php?page_status=etape2";
$tab_liens[3] = "etape3.php?page_status=etape3";
$tab_liens[4] = "etape4.php?page_status=etape4";
$tab_liens[5] = "etape5.php?page_status=etape5";
$tab_liens[6] = "etape6.php?page_status=etape6";
$tab_liens[7] = "etape7.php?page_status=etape7";
$tab_liens[8] = "etape8.php?page_status=etape8";
$tab_liens[9] = "etape9.php?page_status=etape9";
//-------------------------------------------------- Quelques variables
$Status = $HTTP_GET_VARS['page_status'];

//------------------------------------------------- on contruit le code au fur et à mesure
$code = "
<table width='244' border='0' cellspacing='0' cellpadding='0'><tr><td colspan='11'><img src='img/nav/nav_header.gif' alt='' height='63' width='491' border='0' /></td></tr>
<tr>";

switch ($Status){
      case "intro" :
	if($intro == true){
	             $code+="<td><a href='".$tab_liens[0]."' onmouseover=changeImages('intro','".$tab_nav_on[0]."');return true onmouseout=changeImages('intro','".$tab_nav_ok[0]."');return true ><img id='intro' src='".$tab_nav_ok[0]."' alt='' name='intro' height='54' width='59'  border='0' /></a></td>";
		}else{
		$code+="<td><a href='#' onmouseover=changeImages('intro','".$tab_nav_on[0]."');return true onmouseout=changeImages('intro','".$tab_nav_on[0]."');return true ><img id='intro' src='".$tab_nav_on[0]."' alt='' name='intro' height='54' width='59'  border='0' /></a></td>";
		if($etape1 == true){
			$code+="<td><a href='".$tab_liens[1]."' onmouseover=changeImages('etape1','".$tab_nav_on[1]."');return true onmouseout=changeImages('etape1','".$tab_nav_ok[1]."');return true ><img id='etape1' src='".$tab_nav_ok[1]."' alt='' name='etape1' height='54' width='59'  border='0' /></a></td>";
			}
		}
		break;
		
	
	/*else{
		$code+="<td><a href='".$tab_liens[0]."' onmouseover=changeImages('intro','".$tab_nav_on[0]."');return true onmouseout=changeImages('intro','".$tab_nav_off[0]."');return true ><img id='intro' src='".$tab_nav_off[0]."' alt='' name='intro' height='54' width='59'  border='0' /></a></td>";
	}*/
}
		
et enfin dans me body

 echo($code);


Mammouth du PHP | 19672 Messages

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

mickeymick
Invité n'ayant pas de compte PHPfrance

25 sept. 2005, 17:30

mais c'est super !!!!!!
j'ai tout compris .... enfin je crois ;)

Merci bcp. bcp. bcp. bcp. je vais essayer ca de suite.
Merci encore.

Bonne soirée.

Michael