A voir également:
- Erreur "Warning: Trying to access array offset on value of "
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 3005 france tv - Forum TV & Vidéo
- Erreur 10016 epson - Forum Imprimante
2 réponses
jordane45
Messages postés
38303
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
20 avril 2023 à 06:53
20 avril 2023 à 06:53
Bonjour
Commence par corriger la ligne au dessus...
if($result === true){ //Ou plus simple if($result){
jordane45
Messages postés
38303
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
20 avril 2023 à 21:05
20 avril 2023 à 21:05
Voici quelques liens utiles à lire..
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, ton code devrait ressembler à un truc du genre
<?php // Démarrage des variables de session session_start(); //Affichage des éventuelles erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //Connexion à la bdd require_once 'database.php'; //déclaration de variables $msg = ""; //Traitement du formulaire if(isset($_POST['lsubmit'])){ extract($_POST); if(!empty($lmail) && !empty($lpass)){ try{ $lq = $db->prepare("SELECT * FROM utilisateur WHERE email = :email"); $lq->execute([':email' => trim($lmail) ]); $result = $lq->fetch(); }catch(Exception $e){ //en cas d'erreur dans la requete echo "Erreur " . $e->getMessage() . PHP_EOL; } if(!empty($result) ){ if(password_verify(trim($lpass), trim($result['mdp']))){ $_SESSION['USER'] = $result; $msg = "connection faite !"; // A retirer et à remplacer par une redirection vers une autre page une fois que ton code marchera //header('Location: profil.php'); //exit; }else{ $msg = "ce pas le bon mot de passe"; // en général on évite de donner cette info pour éviter les attaques en force brute } }else{ $msg = "l'email n'est pas valide"; } }else{ $msg = "Merci de completer l'ensemble des champs"; } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Connexion</title> <link rel="stylesheet" href="styleform.css"> <link rel="shortcut icon" href="ressources/image/home_favicon.png" type="image/x-icon"> </head> <body> <p>coucou</p> <form method="post" action=""> <input autocomplete="off" id="lmail" placeholder="Email" name="lmail" type="email" required> <input autocomplete="off" id="lpass" placeholder="Password" name="lpass" type="password" required> <button type="submit" name="lsubmit" id="lsubmit">Login</button> </form> <?php if(!empty($msg)){ ?> <div class="error"> <?php echo $msg; ?> </div> <?php } ?> </body> </html>
Modifié le 20 avril 2023 à 11:27
merci encore pour votre aide, je n'ai plus d'erreur maintenant mais par contre savez vous pourquoi je n'ai pas les réponse attendue ??
en gros maintenant ça fonctionne mais l'étape ou on vérifie le mot de passe c'est sensé renvoyer un petit message pour dire si c'est bon ou pas mais la peut importe si c'est le bon mot de passe ou pas, ça m'affichera quand même que se n'est pas le bon
merci encore
20 avril 2023 à 12:25
Re,
Ton mot de passe est crypté en bdd ( Hashé serait le terme le plus exact...) ??
Avec quel code l'as tu généré et stocké en bdd ?
20 avril 2023 à 12:32
je crypte le mot de passe avec se code:
et je le stocke dans ma base de données avec se code:
je ne sais pas si c'est bien ça que vous demandiez