Problème vérification doublon email

Par bertrand bovet, il y a 6 ans


Bonjour à toutes et tous,
Voilà j'explique mon problème: je n'arrive pas à faire la vérification d'email pour savoir si il existe déjà dans la bdd.
Je suis débutant et ai suivi le tuto de grafikart mais je ne comprends pas d'ou vient le problème...help me please!
Le php de la page "inscription":
<?php require 'include/database.php';

if(!empty($_POST)){
    $errors = array();

    if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])){
        $errors ['username'] = "Votre pseudo n'est pas valide";
    }

    if(empty($_POST['email']) || !FILTER_VAR($_POST['email'], FILTER_VALIDATE_EMAIL)){
        $errors ['email'] = "Votre email n'est pas valide";
    }else{
        $req = $pdo->prepare('SELECT id FROM users WHERE email = ?');
        $req->execute([$_POST['email']]);
        $user = $req->fetch();
        if($user){
            $errors['email'] = 'Cet email est déjà utilisé pour un autre compte';
        }
    }

    if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']){
        $errors['password'] = "Vous devez saisir un mot de passe valide.";
    }

    if(empty($errors)){

        $req = $pdo->prepare ("INSERT INTO membres.users SET username = ?, password = ?, email = ? ");
        $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
        $req -> execute([$_POST['username'], $_POST['email'], $password]);
        die('Votre compte a bien été crée.');

                    }
                }

?>

Et celui de database.php pour se connecter à la bdd:
<?php

$pdo = new PDO ('mysql:dbname=membres; host=localhost', 'root', 'root');
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

Merci d'avoir prit le temps de me lire et de m'aider!

8 réponses

Carouge10, il y a 6 ans

Bonjour,
Comment ça tu n'y arrives pas ? car là c'est bon.
Tu as une erreur par contre avec l'insert ou tu inverses password et email

bertrand bovet, il y a 6 ans

En faite le problème est que si je me réinscris avec la adresse mail il me l'ajoute...
Dans le fichier php_error.log, je n'ai aucune erreur. En faite il m'affiche "Votre compte a bien été crée".
Je mets le PHP qui est inclus au milieu du html:
<div class="wrapper">
<div class="inner">
<img src="images/image-1.png" alt="" class="image-1">
<form action="" method="POST">

                <h3>Nouveau compte?</h3>
                <?php if(!empty($errors)): ?>
                <div class="alert alert-danger">
                <p>Vous n'avez pas rempli le formulaire correctement</p>
                <ul>
                <?php foreach($errors as$error): ?>
                <li><?= $error; ?></li>
                <?php endforeach; ?>
                </ul>
                </div>
                <?php endif; ?>

                <div class="form-holder">
                    <span class="lnr lnr-user"></span>
                    <input type="text" name="username" class="form-control" placeholder="Pseudo">
                </div>
                <div class="form-holder">
                    <span class="lnr lnr-envelope"></span>
                    <input type="email" name="email"  class="form-control" placeholder="Email">
                </div>
                <div class="form-holder">
                    <span class="lnr lnr-lock"></span>
                    <input type="password" name="password"  class="form-control" placeholder="Mot de passe">
                </div>
                <div class="form-holder">
                    <span class="lnr lnr-lock"></span>
                    <input type="password" name="password_confirm"  class="form-control" placeholder="Confirmer le mot de passe">
                </div>
                <button type="submit    ">
                    <span>S'inscrire</span>
                </button>
                <button type="button" onclick="window.location.href = 'index.html';"> 
                    <span>Accueil</span>
                </button>
            </form>
          J'avoue ne pas avoir bien compris le "foreach", "enforeach" et le "endif"...merci en tou cas!
bertrand bovet, il y a 6 ans

<!--FORMULAIRE-->

     <div class="wrapper">
        <div class="inner">
            <img src="images/image-1.png" alt="" class="image-1">
            <form action="" method="POST">

                <h3>Nouveau compte?</h3>
                <?php if(!empty($errors)): ?>
                <div class="alert alert-danger">
                <p>Vous n'avez pas rempli le formulaire correctement</p>
                <ul>
                <?php foreach($errors as$error): ?>
                <li><?= $error; ?></li>
                <?php endforeach; ?>
                </ul>
                </div>
                <?php endif; ?>

                <div class="form-holder">
                    <span class="lnr lnr-user"></span>
                    <input type="text" name="username" class="form-control" placeholder="Pseudo">
                </div>
                <div class="form-holder">
                    <span class="lnr lnr-envelope"></span>
                    <input type="email" name="email"  class="form-control" placeholder="Email">
                </div>
                <div class="form-holder">
                    <span class="lnr lnr-lock"></span>
                    <input type="password" name="password"  class="form-control" placeholder="Mot de passe">
                </div>
                <div class="form-holder">
                    <span class="lnr lnr-lock"></span>
                    <input type="password" name="password_confirm"  class="form-control" placeholder="Confirmer le mot de passe">
                </div>
                <button type="submit    ">
                    <span>S'inscrire</span>
                </button>
                <button type="button" onclick="window.location.href = 'index.html';"> 
                    <span>Accueil</span>
                </button>
            </form>
bertrand bovet, il y a 6 ans

Pu**IN! Ca fonctionne!! tu avais raison ! Merci mille fois! Le password et l'email était inversé!!! Merci merci MERCIIIIII!

Carouge10, il y a 6 ans

de rien. Tu peux passer ton sujet en résolu

bertrand bovet, il y a 6 ans

J'aimerais bien mais comment faire s'ilt te plaît?

Carouge10, il y a 6 ans

A droite sur un de mes commentaires tu as " ceci m'a aider a résoudre mon problème"

bertrand bovet, il y a 6 ans

Merci pour ca aussi ;) bonne soirée