<?php/* init your crap here */$cur_step = (int) isset($_POST['step']) ? $_POST['step'] : 1;if ($cur_step > MAX_STEP) { //revert to first step $cur_step = 1;}?><form action="<?=$_SERVER['PHP_SELF']?>" method="post"><?php$error = '';switch($cur_step) { case 2: //verif data from step 1 ... if (!verif_data_step_1()) { //revert one step $error = 'Bad data from first form'; echo $error; show_step_1(); $cur_step = 1; } else { show_step_2(); } break; case 3: //we get here from step 2 if (!verif_data_step_2()) { //revert one step $error = 'Bad data from second form'; echo $error; show_step_2(); $cur_step = 2; } else { //we could redirect from here to somewhere else to show that the thing completed succesfuly show_end thing(); } break; case 1: default: show_step_1(); break;}?><input type="hidden" name="step" value="<?=$cur_step?>" /></form>