Inscription test

Eléphanteau du PHP | 19 Messages

16 juin 2019, 14:52

Salut ! J'ai un soucis dans mon contrôleur au moment de l'inscription je veux faire plusieurs test afin de valider ou refuser une inscription Le premier problème est que quand une inscription est refusé il envoie quand même un email a l'utilisateur comme quoi il à bien était inscrit et de plus le test suivant

if ( $liste['email'] == $_POST['email']) {
$form['valide'] = false;
$form['message'] ="Cette email est déjà utilisé";
}

ne s'effectue pas je ne comprend pas pourquoi ?

Merci de votre aide


Mon controleur :

  function actionInscription($twig, $db) {
           $form = array();
            if (isset($_POST['btInscrire'])) {
            $nom = $_POST['nom'];
            $prenom = $_POST['prenom'];
            $email = $_POST['email'];
            $telephone = $_POST['telephone'];
            $pass = $_POST['pass'];
            $pass2 = $_POST['pass2'];
            $form['valide'] = true;
            $idrole = 1;

            $utilisateur = new Utilisateur($db);
            $liste = $utilisateur->select();
           //-----Captchat------//

            $secret = "6Let9KcUAAAAACxPpScT6BNbm6nGJ1v_5f59Ui5q";
            $response = $_POST['g-recaptcha-response'];
            $remoteip = $_SERVER['REMOTE_ADDR'];
            $api_url = "https://www.google.com/recaptcha/api/siteverify?secret="
                    . $secret
                    . "&response=" . $response
                    . "&remoteip=" . $remoteip;
            $decode = json_decode(file_get_contents($api_url), true);
            //-----FinCaptchat------//

        var_dump($liste);
            /*/Captchat condition//
            if ($decode['success'] == true) {
                $form['valide'] = true;
                $form['message'] = "Vous n'avez pas valider le captchat";
            }*/
            if ( $liste['email'] == $_POST['email']) {
              $form['valide'] = false;
              $form['message'] ="Cette email est déjà utilisé";
            }
            //FINCondition//
            elseif ($pass != $pass2) {
                $form['valide'] = false;
                $form['message'] = 'Les mots de passe sont différents';
            }
            elseif (strlen($pass) < 8) {
                $form['valide'] = false;
                $form['message'] = 'Votre mot de passe est trop court il doit contenir au moins 8 caractères';
            }
            else {
                //Envoie d'un mail de confirmation//
            $header = "MIME-Version: 1.0\r\n";
            $header .= 'From:"CocooningDog.fr"<[email protected]>' . "\n";
            $header .= 'Content-Type:text/html; charset="uft-8"' . "\n";
            $header .= 'Content-Transfer-Encoding: 8bit';
            $message = "
       <html>
       	<body>
      		 <div align='center'>
      			Bienvenue $nom .<br/>
            <img width='800px' height='400px' src='cocooningdog.fr/images/chiens3.jpg' />
     Veuillez vous rendre sur le site pour prendre rendez-vous </a> </p>

      		</div>
      	</body>
      </html>
      ";

                mail($email, "Cocooning !", $message, $header);
                //fin d'envoie du mail//


                $utilisateur = new Utilisateur($db);
                $exec = $utilisateur->insert($nom, $prenom, $email,$telephone, password_hash($pass, PASSWORD_DEFAULT), $idrole);

                if (!$exec) {
                    $form['valide'] = false;
                    $form['message'] = 'Veuillez vérifier les informations saisie ';
                }
            }
            $form['email'] = $email;
        }

        echo $twig->render('inscription.html.twig', array('form' => $form, 'session' => $_SESSION));
    }



Mon modele :
class Utilisateur {

    private $db;
    private $insert;
    private $connect;
    private $update;
    private $select;
    private $selectByEmail;
    private $updateMdp;

    public function __construct($db) {
        $this->db      = $db;
        $this->connect = $db->prepare("select * from utilisateurs where email=:email ");
        $this->insert  = $db->prepare("insert into utilisateurs( nom , prenom , email, telephone, pass , idrole) values(  :nom, :prenom ,:email, :telephone, :pass ,:idrole)");
        $this->update = $db->prepare("update utilisateurs set nom=:nom, prenom=:prenom,  email=:email, telephone=:telephone, pass=:pass where email=:email");
        $this->select = $db->prepare("select * from utilisateurs");
        $this->selectByEmail = $db->prepare("select email from utilisateurs where email=:email");
        $this->updateMdp = $db->prepare("update utilisateurs set pass=:pass where email=:email");
    }


    public function connect($email) {
        $unUtilisateur = $this->connect->execute(array(':email' => $email ));
        if ($this->connect->errorCode() != 0) {
            print_r($this->connect->errorInfo());
        }
        return $this->connect->fetch();
    }

    public function insert( $nom, $prenom, $email, $telephone, $pass, $idrole) {
        $r = true;
        $this->insert->execute(array(':nom' => $nom, ':prenom' => $prenom , ':email'=>$email ,':telephone' => $telephone, ':pass' => $pass , ':idrole'=>$idrole));
        if ($this->insert->errorCode() != 0) {
            print_r($this->insert->errorInfo());
            $r = false;
        }
        return $r;
    }

    public function update($nom, $prenom,  $email,$telephone, $pass) {
        $r = true;
        $this->update->execute(array(':nom' => $nom, ':prenom' => $prenom, ':email' => $email, ':telephone' => $telephone ,':pass' => $pass));
        if ($this->update->errorCode() != 0) {
            print_r($this->update->errorInfo());
            $r = false;
        }
        return $r;
    }

    public function selectByEmail($email) {
        $this->selectByEmail->execute(array(':email' => $email));
        if ($this->selectByEmail->errorCode() != 0) {
            print_r($this->selectByEmail->errorInfo());
        }
        return $this->selectByEmail->fetch();
    }

    public function select() {
        $liste = $this->select->execute();
        if ($this->select->errorCode() != 0) {
            print_r($this->select->errorInfo());
        }
        return $this->select->fetchAll();
    }

    public function updateMdp($pass, $email) {
        $r = true;
        $this->updateMdp->execute(array(':pass' => $pass, ':email' => $email));
        if ($this->updateMdp->errorCode() != 0) {
            print_r($this->updateMdp->errorInfo());
            $r = false;
        }
        return $r;
    }

}

Ma vue :
  <form  method="post" action="" class="register-form-style">
    {% if form.valide is defined %}
        {% if form.valide == true %}
        {% else %}
            <h3 >Echec de connexion</h1><br>
            <h3 > {{form.message}}</h1><br><br>
        {% endif %}
    {% else %}
    {% endif %}
    <input type="text" name="nom" placeholder="Nom"/>
    <input type="text" name="prenom" placeholder="Prenom"/>
    <input type="email" name="email" placeholder="Adresse Email"/>
    <input type="tel" id="phone" name="telephone"
pattern="^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$"
placeholder="Numéro de téléphone" />

    <input type="password" name="pass" placeholder="Mot de passe"/>
    <input type="password" name="pass2" placeholder="Confirmer le mot de passe"/>

    <div class="g-recaptcha" style="transform:scale(0.90);-webkit-transform:scale(0.90);transform-origin:0 0;-webkit-transform-origin:0 0;" data-sitekey="6Let9KcUAAAAADuEe7wWXGxotn8ECWPJ_nVq1oQO"> </div>

  <p class="message">"En cliquant sur le bouton inscription vous acceptez nos conditions d'utilisations."</p><br />

    <button name="btInscrire">Inscription</button>
  <p class="message">"Vous avez déjà un compte ?<a href="index?page=connexion"> Connexion</a></p>

  </form>
Merci de votre aide :)

Avatar du membre
Mammouth du PHP | 1609 Messages

16 juin 2019, 21:00

Salut, pour essayer de comprendre ce qu'il se passe met des echo où il faut pour voir si php passe ou non à tel et tel endroit. Si une condition ne fonctionne pas, vérifie le contenu des variables utilisées juste avant la condition.
Développeur web depuis + de 20 ans