Simplifier une grosse condition IF
Bonjour,
Voilà, j'ai fait un petit code, un simple affichage de boutons allant de 0 à 9 (sous forme de formulaire), afin d'entrer un code caché.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| <?php
session_start();
$code='085208'; // Déclarer le code
$code=str_split($code); // Mettre le code dans un tableau
if(isset($_POST['send'])){
if(isset($_SESSION['chiffre5'])) {
if(isset($_POST['send']) && $_POST['send']==$code[5]){ // Chiffre 6
$_SESSION['chiffre6'] = $_POST['send'];
echo 'Code complété : ' . $_SESSION['chiffre1'] . ' ' . $_SESSION['chiffre2'] . ' ' . $_SESSION['chiffre3'] . ' ' . $_SESSION['chiffre4'] . ' ' . $_SESSION['chiffre5'] . ' ' . $_SESSION['chiffre6'];
echo '<br>Félicitations, vous avez débloqué le <a href="Shifumi/index.php" target="_blank">shifumi</a>';
} else {
unset($_SESSION['chiffre1']);
unset($_SESSION['chiffre2']);
unset($_SESSION['chiffre3']);
unset($_SESSION['chiffre4']);
unset($_SESSION['chiffre5']);
echo $fail;
}
} else {
if(isset($_SESSION['chiffre4'])) {
if(isset($_POST['send']) && $_POST['send']==$code[4]){ // Chiffre 5
$_SESSION['chiffre5'] = $_POST['send'];
echo $_SESSION['chiffre1'] . ' ' . $_SESSION['chiffre2'] . ' ' . $_SESSION['chiffre3'] . ' ' . $_SESSION['chiffre4'] . ' ' . $_SESSION['chiffre5'] . ' _';
} else {
unset($_SESSION['chiffre1']);
unset($_SESSION['chiffre2']);
unset($_SESSION['chiffre3']);
unset($_SESSION['chiffre4']);
echo $fail;
}
} else {
if(isset($_SESSION['chiffre3'])) {
if(isset($_POST['send']) && $_POST['send']==$code[3]){ // Chiffre 4
$_SESSION['chiffre4'] = $_POST['send'];
echo $_SESSION['chiffre1'] . ' ' . $_SESSION['chiffre2'] . ' ' . $_SESSION['chiffre3'] . ' ' . $_SESSION['chiffre4'] . ' _ _';
} else {
unset($_SESSION['chiffre1']);
unset($_SESSION['chiffre2']);
unset($_SESSION['chiffre3']);
echo $fail;
}
} else {
if(isset($_SESSION['chiffre2'])){
if(isset($_POST['send']) && $_POST['send']==$code[2]){ // Chiffre 3
$_SESSION['chiffre3'] = $_POST['send'];
echo $_SESSION['chiffre1'] . ' ' . $_SESSION['chiffre2'] . ' ' . $_SESSION['chiffre3'] . ' _ _ _';
} else {
unset($_SESSION['chiffre1']);
unset($_SESSION['chiffre2']);
echo $fail;
}
} else {
if(isset($_SESSION['chiffre1'])){
if(isset($_POST['send']) && $_POST['send']==$code[1]){ // Chiffre 2
$_SESSION['chiffre2'] = $_POST['send'];
echo $_SESSION['chiffre1'] . ' ' . $_SESSION['chiffre2'] . ' _ _ _ _';
} else {
unset($_SESSION['chiffre1']);
echo $fail;
}
} else {
if(isset($_POST['send']) && $_POST['send']==$code[0]){ // Chiffre 1
$_SESSION['chiffre1'] = $_POST['send'];
echo $_SESSION['chiffre1'] . ' _ _ _ _ _';
} elseif (isset($_POST['send']) && $_POST['send']!=$code[0]){
echo '_ _ _ _ _ _<br>Raté';
}
}
}
}
}
}
} elseif(!isset($_POST['send']) && !isset($_SESSION['chiffre6'])) {
echo '_ _ _ _ _ _';
} elseif(!isset($_POST['send']) && isset($_SESSION['chiffre6'])) {
echo 'Code complété : ' . $_SESSION['chiffre1'] . ' ' . $_SESSION['chiffre2'] . ' ' . $_SESSION['chiffre3'] . ' ' . $_SESSION['chiffre4'] . ' ' . $_SESSION['chiffre5'] . ' ' . $_SESSION['chiffre6'];
echo '<br>Félicitations, vous avez débloqué le <a href="Shifumi/index.php" target="_blank">shifumi</a>';
}
if(!isset($_SESSION['chiffre6'])):
echo '
<table>
<form method="post">
<tr>
<td><input type="submit" name="send" value="1" class="boutonCache"></td>
<td><input type="submit" name="send" value="2" class="boutonCache"></td>
<td><input type="submit" name="send" value="3" class="boutonCache"></td>
</tr>
<tr>
<td><input type="submit" name="send" value="4" class="boutonCache"></td>
<td><input type="submit" name="send" value="5" class="boutonCache"></td>
<td><input type="submit" name="send" value="6" class="boutonCache"></td>
</tr>
<tr>
<td><input type="submit" name="send" value="7" class="boutonCache"></td>
<td><input type="submit" name="send" value="8" class="boutonCache"></td>
<td><input type="submit" name="send" value="9" class="boutonCache"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="send" value="0" class="boutonCache"></td>
</tr>
</form>
</table>';
else:
echo '<br><br><a href="?resetJeu">Réafficher le formulaire</a>';
endif;
if(isset($_GET['resetJeu'])) {
unset($_SESSION['chiffre1']);
unset($_SESSION['chiffre2']);
unset($_SESSION['chiffre3']);
unset($_SESSION['chiffre4']);
unset($_SESSION['chiffre5']);
unset($_SESSION['chiffre6']);
header("location: ".$_SERVER["PHP_SELF"]);
}
?> |
Voici donc à quoi ressemble le code et il fonctionne.
L'utilisateur a donc un code à 6 chiffres à entrer en appuyant sur les boutons du formulaire, et le code s'actualise chiffre par chiffre.
Je me demandais s'il n'y avait pas une condition plus simple pour effectuer ce genre de test... (je me suis aussi peut-être un peu compliqué la vie en faisant les conditions à l'envers (le premier if test le dernier chiffre du code... oups, mais j'étais plus dans l'optique "si le chiffre 6 n'existe pas, on teste le chiffre 5", etc...)
J'aimerais voir et comprendre comment l'optimisation de code fonctionne.
Merci :)