[RESOLU] Erreur sur une fonction de vérification de donnée entrée pour un formulaire d'authentification.

Petit nouveau ! | 4 Messages

29 déc. 2020, 21:15

Bonjour à la teamPHPFrance,
Je suis confronté à un problème d'authentification, et je n'arrive pas à voir ou est l'erreur sur mon code:

Dans un premier temps, j'ai une page login.html:
<form class="user" method="post" action="connexionOffice.php">
    <div class="form-group">
        <input type="text" class="form-control form-control-user"
           id="nimm" name="nimm"
            placeholder="Entrer votre NIMM (numero d'immatriculation)" required>
    </div>
    <div class="form-group">
        <input type="passwords" class="form-control form-control-user"
           id="passwords" name="passwords" placeholder="Mots de passe" required>
    </div>
    <input class="btn btn-primary btn-user btn-block" type="submit"  value='Se connecter'>
    <hr>
</form>
Je renvoi par la requette POST les donnée de nimm et password à la page connexionOffice, qui contient ce bou de code.
<?php
session_start();
include_once 'function.php';
$nimm = $_POST["nimm"];
$passwords = $_POST["passwords"];
if (verification_Office($nimm, $passwords)) {
        header("Location: adminOffice.php");    
} 
else {
    header("Location: loginOffice.php");
}
La page fonction contient la connexion à la basse de donnée connexion(), et une function de verification, c'est là ou je bloque, je n'arrive pas a voir mes erreur sur cette fonction que j'ai crée.
function verification_Office($user, $pwd) {
    $compteExistant = false;
    $pdo = Connexion();
    if ($pdo != null) {
        $sql = "SELECT nimm, passwords as nb FROM users_offices";
        $prep = $pdo->prepare($sql);
        $prep->bindParam(':nimm', $user, PDO::PARAM_STR);
    $prep->bindParam(':passwords', $pwd, PDO::PARAM_STR);
        $prep->execute();
    $resultat = $prep->fetch();
        if ($resultat["nb"] == 1) {
    $compteExistant = true;
    }
        $prep->closeCursor();
    }
    return $compteExistant;
    }

Mammouth du PHP | 2703 Messages

29 déc. 2020, 21:19

$sql = "SELECT nimm, passwords as nb FROM users_offices";
soit une requête sans paramètre.

$prep->bindParam(':nimm', $user, PDO::PARAM_STR);
pas de paramètre mais on lie quand même un paramètre.

Petit nouveau ! | 4 Messages

29 déc. 2020, 21:26

J'avais mi ça
$sql = "SELECT count(*) as nb FROM users_partners". " WHERE nimm=:nimm AND passwords=:passwords";
mais sa marche toujours pas.

Mammouth du PHP | 2703 Messages

29 déc. 2020, 21:30

il faut debuguer, mettre des echo un peu partout. cela rentre bien dans la fonction ? cela passe bien le if ? les valeurs des variables sont correctes ...

Petit nouveau ! | 4 Messages

29 déc. 2020, 23:32

Peut etre que la requette Sql est mal ecrite,
voilà le code que j'ai maintenant :
function verification_Office($user, $pwd) {
    $compteOfficeExistant = false;
    $pdo = Connexion();
    if ($pdo != null) {
        $sql = "SELECT count(*) as nb FROM users_partners". " WHERE nimm=:nimm AND passwords=:pwd";
        $prep = $pdo->prepare($sql);
        $prep->bindParam(':nimm', $user, PDO::PARAM_STR);
        $prep->bindParam(':pwd', $pwd, PDO::PARAM_STR);
        $prep->execute();
    $resultat = $prep->fetch();
        if ($resultat["nb"] == 1) {
    $compteOfficeExistant = true;
    }
        $prep->closeCursor();
    }
    return $compteOfficeExistant;
    }
ma base de donnée est une table qui s'appel users_offices avec |id|nimm|passwords|

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 janv. 2021, 15:16

Salutations !

Si ta table en base de données s'appelle users_offices, est-ce normal que dans ta requête tu tentes de compter les enregistrements de users_partners ? :)

PDO n'est pas pratique pour debugger, il faut activer et chercher dans le log de MySQL pour voir s'il y a des erreurs sur la requête exécutée... tu peux cependant essayer de reconstruire la requête avec ses paramètres et faire un echo pour voir le résultat et pouvoir le tester dans phpmyadmin ou équivalent ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...