If / else

Résolu/Fermé
Gui4671 Messages postés 33 Date d'inscription jeudi 24 janvier 2019 Statut Membre Dernière intervention 7 avril 2019 - 20 févr. 2019 à 18:25
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 20 févr. 2019 à 19:40
Bonjour à tous,
J'ai un petit problème avec les conditions php...
Je voulais utiliser un if et un else pour autoriser ou bloquer l'accès à une partie de membres de mon site...

Ma première page (avec un petit formulaire)
<tr><td>En savoir plus:</td><td><form action="/membres/ID1001.php" method="post">
                                <p>
                                    <input type="password" name="mot_de_passe" placeholder="Votre mot de passe" required />
                                    <input type="submit" value="Valider" />
</p>
                                </form></th></tr>


Ma seconde page (page reservée à certaines personnes)
<?php
      		if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==   "mdp1" OR "mdp2" OR "mdp3") {texte texte.} else { texte texte }?>


J'ai juste mis ma partie php qui me pose problème...
Quand je cela, tous les mots de passe sont autorisés et donc en tapant n'importe quoi on peut accéder à cette page (Plus de sécurité)
Quand je mets la même chose mais avec un seul mdp, cela fonctionne...

Je ne comprends ce qui se passe, quelqu'un peut il m'éclairer?
(Je vous avoue que je n'ai pas su chercher beaucoup car je dois terminer mon travail rapidement et que j'ai encore du boulot :) )

Merci d'avance à vous.
Configuration: Windows / Firefox 65.0
A voir également:

2 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
20 févr. 2019 à 18:58
(isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==   "mdp1" OR "mdp2" OR "mdp3")

Une chaine n'est pas vide donc renvoie true :

Ton code est en fait (une fois les priorités remise en place) :
((isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe'] ==   "mdp1") OR true OR true)


donc True.
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 20 févr. 2019 à 19:40
Bonjour,

Les conditions c'est :
Si variable == toto
OU si variable == titi
OU si variable == truc ...
Tu remarqueras qu'on réécrit la variable pour CHAQUE condition....

Le
Si variable == toto ou titi ou truc ..... ça ne marche pas !

Donc
Déjà.. on commence par récupérer proprement les variables avant de les utiliser :
(je t'invite à lire ceci : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code )
$password = !empty($_POST['mot_de_passe']) ? $_POST['mot_de_passe'] : NULL;

Puis on fait le IF correctement
//on fait le test :
if ($password ==   "mdp1" OR  $password=="mdp2" OR $password=="mdp3") {


On peut aussi utiliser un array pour contenir les réponses possibles...
$password_allow = array("mdp1","mdp2","mdp3");

Puis vérifier si le mot de passe se trouve dans cette liste
if(in_array($password,$password_allow)){


0