Bonjour,
C'est la logique de ton script qu'il faut revoir.
$reponse = $bdd->prepare('SELECT * FROM utilisateurs WHERE login =:login AND mdp=:mdp AND fonction="controleur";' );
1- "...AND fonction="controleur" : tu ne cherches QUE les controleurs...
2- "...AND mdp=:mdp..." : là, c'est plus grave : ça suppose que les mots de passe sont enregistrés EN CLAIR dans la BDD.
Il NE faut JAMAIS enregistrer EN CLAIR !!!
3- EVITE de mettre " SELECT * " : il vaut mieux indiquer uniquement les colonnes nécessaires.
4- Il faut écrire :
$reponse = $bdd->prepare('SELECT idutilisateur, nom, prenom, mdp, type, fonction FROM utilisateurs WHERE login =:login";' );
Ensuite, on vérifie, pour CE login, que le mot de passe enregistré est le même que celui tapé.
Avec le mot de passe EN CLAIR (CE QU'IL NE FAUT PAS FAIRE, je le répète) :
1 2 3 4
| if( $ligne['mdp'] == $mdp)
{
// OK, on continue...
} |
5- Enfin, on met une condition, pour rediriger vers le bon fichier :
1 2 3 4 5 6
| if( $ligne['fonction'] == 'controleur' )
{
header('Location:...............');
} else {
header('Location:...............');
} |
BONNE METHODE pour le Mot de passe :
1 2 3 4
| if( password_verify( $mdp, $ligne['mdp']) )
{
// OK, on continue...
} |
Partager