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
Réponse acceptée

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

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!

<!--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>

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

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

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

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

Merci pour ca aussi ;) bonne soirée