Deux erreurs en ligne 58

Résolu/Fermé
janyduchemin - 11 août 2021 à 16:33
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 - 13 août 2021 à 01:28
Salut
j'ai deux erreurs en ligne 58 sur signup.php


voila mon fichier Db.php
<?php
 
/**
* Gestion de la base de données
*/
class Db{
     
    private $host=HOST;
    private $name=DBNAME;
    private $user=USER;
    private $pass=PWD;
 
    private $connexion;
 
    function __construct($host=null,$name=null,$user=null,$pass=null){
         
        if($host != null){
            $this->host = $host;
            $this->name = $name;
            $this->user = $user;
            $this->pass = $pass;
        }
 
        try{
 
            $this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name,
                $this->user,$this->pass,array(
                    1002 =>'SET NAMES UTF8',
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING

                    ));
            $this->connexion->exec('SET NAMES utf8');
//PDO::MYSQL_ATTR_INIT_COMMAND
        }catch (PDOException $e){
            //echo 'Erreur : Impossible de se connecter  à la BD !';die();
            echo $e->getMessage();
        }

    }

    /* requete */
 
    public function query($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->fetchAll(PDO::FETCH_OBJ);
    }
 
    public function tquery($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->fetchAll(PDO::FETCH_ASSOC);
    }
 
 
    public function insert($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $nb=$req->execute($data);
        return $nb;
    }
    
	
	public function exec($sql , $data=array()){
      try{
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête
      }catch(Exception $e){
        echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête !
      }
    }

    public function deleteuser($id){
       $sql = 'DELETE FROM users WHERE id=:id';
       $data = [':id'=>$id]; 
       return  $DB->exec($sql , $data) ;
    }

  public function uniqueEmail($email){
        $req = $this->connexion->prepare('SELECT count(*) as nbre from users WHERE email=:email limit 1');
        $req->execute(array('email'=>$email));
 
        $reponse = $req->fetchAll(PDO::FETCH_ASSOC);
        return $reponse[0]['nbre'];
 
    }


}


signup.php

<?php require 'includes/includes.php';

?>
<?php 
    if(!empty($_POST)){

        if(!empty($_POST['password']) && ( filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ) ){

           

            $email= addslashes($_POST['email']);
            // modifier sha1 par Auth::hashPassword();
            $password = Auth::hashPassword($_POST['password']);
            $token = sha1(uniqid(rand()));

            $nom_prenom=addslashes($_POST['nom_prenom']);
            $ville = addslashes($_POST['ville']);
            

            $reponse = $DB->uniqueEmail($email);

            if($reponse !=0){
                $_SESSION['erreur'] = "Adresse email déja utilisée par un membre.";
            }else{

                $data = array(
                        'nom_prenom'=>$nom_prenom,
                        'ville'=>$ville,
                        'email'=>$email,
                        'password'=>$password,
                        'token'=>$token,                        
                    );
                $sql ='INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom,:ville,:email,:password,:token)';
                $req= $DB->insert($sql,$data);
                //envoi d'email.
                $mail_to =$email;
                $mail_subject  =" Validation de votre compte !!";
                $headers = "From : Ndameyong\r\n";
                $headers.="Reply-To:***@*** \r\n";
                $headers.="MIME-Version 1.0\r\n";
                $headers.="Content-type: text/html;charset=utf-8\r\n";
                $mail_body ='Bonjour <br/> Veuillez ciquer sur <a href="http://localhost/ndameyong/activate.php?token='.$token.'&email='.$email.'"> le lien </a>pour activer votre compte ';

                if(mail($mail_to,$mail_subject,$mail_body,$headers)){
                    $_SESSION['message'] = " Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte ";
                    unset($_POST);
                }else{
                    $_SESSION['erreur'] = "Un problème est survenu lors de l'envoi d'email !.";
                }
            }

        }else{
            if(empty($_POST['password'])){
                $erreur_password  ='Un mot de passe est requis !.';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
            }

            if(empty($_POST['email'])){
                $erreur_email  ='Le champs email est requis !';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
            }else
                if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ){
                $erreur_email  ='Adresse Email non valide !';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
                }
        }
    }
    
 ?>


 <!-- message de session -->
<?php if (isset($_SESSION['message'])): ?>
  <div class="message"> <?php echo $_SESSION['message']; ?></div>
  <?php unset($_SESSION['message']) ?>
<?php endif ?>
<?php if (isset($_SESSION['erreur'])): ?>
  <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
  <?php unset($_SESSION['erreur']) ?>
<?php endif ?>


<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- reponsive meta-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Création de compte || Ndameyong - L'Ecole des Langues Camerounaises</title>

    <!-- Font Icon -->
    <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
    <link rel="stylesheet" href="fonts/material-icon/css/material-design-iconic-font.min.css">

    <!-- Main css -->
    <link rel="stylesheet" href="css/signup.css">
    
</head>
<body>

    <div class="main">
        <section class="signup">
            <!-- <img src="images/signup-bg.jpg" alt=""> -->
            <div class="container">
                <div class="signup-content">

                    <form action="signup.php" method="post" id="signup">
                        <h2 class="form-title"><a href="index.php"><span class ="moi">accueil du site</span></span></a></h2>
                        
                        <div class="form-group">
                            <input type="text" class="form-input" name="nom_prenom" id="nom_prenom" value="<?php echo isset($_POST['nom_prenom'])?$_POST['nom_prenom']:''; ?>" 
                            placeholder="Nom & Prénom"/>
                        </div>

                        <div class="form-group">
                            <input type="text" class="form-input" name="ville" id="ville" value="<?php echo isset($_POST['ville'])?$_POST['ville']:''; ?>" 
                            placeholder="Ville de Résidence"/>
                        </div>
                        <div class="form-group">
                            <input type="email" class="form-input" class="required" name="email" id="email" value="<?php echo isset($_POST['email'])?$_POST['email']:''; ?>" placeholder="Votre E-mail"/>
                        </div>
                            <?php if (!empty($erreur_email)): ?>
                                <div class="error"><?php echo $erreur_email; ?></div> 
                             <?php endif ?>

                        <div class="form-group">
                            <input type="Password" class="form-input" class="required" name="password" id="password" placeholder="Password"/>
                            <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
                        </div>

                            <?php if (!empty($erreur_password)): ?>
                                <div class="error"><?php echo $erreur_password; ?></div> 
                            <?php endif ?>

                        <p class="information">* Tous les champs sont requis</p>
                        <div class="form-group">
                            <input type="checkbox" name="agree-term" id="agree-term" class="agree-term" />
                            <label for="agree-term" class="label-agree-term"><span><span></span></span>Je m'inscris et je deviens membre de l'association Ndameyong  
                                <a href="statut_reglement.php" class="term-service">Statut & Règlement</a></label>
                        </div>

                        <div class="form-group">
                            <input type="submit" name="submit" id="submit" class="form-submit" value="Sign up"/>
                        </div>
                    </form>
                    <p class="loginhere">
                        Déja Membre ? <a href="login.php" class="loginhere-link">Connecte-toi ici</a>
                    </p>
                </div>
            </div>
        </section>

    </div>

    <!-- JS -->
    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="js/main.js"></script>
</body>
</html>
A voir également:

16 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 11 août 2021 à 17:06
Bonjour,

Quel sont les messages d'erreur ?
Tu es sûr que l'erreur se trouve sur le fichier signup ?
Je pense que c'est dans DB ...

Par contre, la réponse se trouve au niveau du fichier signup.
Tu as une virgule en trop dans ton $data .
Et il est préférable de préfixer les clés par des ":"
      $data = array(
         ':nom_prenom'=>$nom_prenom,
         ':ville'=>$ville,
         ':email'=>$email,
         ':password'=>$password,
        ':token'=>$token                       
         );
        $sql ='INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom, :ville, :email, :password, :token)';
                $req= $DB->insert($sql , $data);



0
janyduchemin
11 août 2021 à 17:32
oui effectivement
Les erreurs que voici

(1- Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\ndameyong\Classes\Db.php on line 58

2 - ) Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in C:\wamp\www\ndameyong\Classes\Db.php on line 58) viennenet du fichier Db.php.

Aussi j'ai reçu le message de mon serveur qui me disait que:
'' Un émail a été envoyé a votre messagerie avec des instructions pour activer votre compte''
Je suis un peu perdu
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
11 août 2021 à 19:19
As-tu corriger le code par rapport à ce que je t'ai donné ???
0
janyduchemin
11 août 2021 à 23:53
Bsr
j'ai retiré la virgule mais le problème est toujours là.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 00:21
Modifies ta fonction INSERT comme ceci
public function insert($sql , $data=array()){
  try{
    $req = $this->connexion->prepare($sql);
    return $req->execute($data);
  } catch(Exception $e){
    echo 'Erreur : '. $e->getMessage();
    echo '<br> Dans la requête :' . $sql;
    echo '<br> Avec les DATAS :';
    var_dump($data);
    exit;
  }
}

0
janyduchemin
12 août 2021 à 02:53
Salut
J'ai changer la fonction INSERT avec votre modification mais les mêmes erreurs persistent.
Pourtant mon serveur m''envoi ce message ( Un émail a été envoyé a votre messagerie avec des instructions pour activer votre compte)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 08:08
Tu as une erreur.. et d'autres infos normalement...
Il serait bien de nous en faire une capture d'écran..

Si ce n'est pas le cas . C'est que tu n'as pas modifié le bon fichier...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 10:32
Bjr

je ne me suis pas trompé de fichier.
je vous envoi la capture d'écran de la page d'inscription (quand un utilisateur rempli le formulaire il reçoit un e-mail mais ces erreurs dont je parle apparaissent aussi

Db.php modifié

<?php require 'includes/includes.php';

?>
<?php 
    if(!empty($_POST)){

        if(!empty($_POST['password']) && ( filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ) ){

           

            $email= addslashes($_POST['email']);
            // modifier sha1 par Auth::hashPassword();
            $password = Auth::hashPassword($_POST['password']);
            $token = sha1(uniqid(rand()));

            $nom_prenom=addslashes($_POST['nom_prenom']);
            $ville = addslashes($_POST['ville']);
            

            $reponse = $DB->uniqueEmail($email);

            if($reponse !=0){
                $_SESSION['erreur'] = "Adresse email déja utilisée par un membre.";
            }else{

                $data = array(
                        'nom_prenom'=>$nom_prenom,
                        'ville'=>$ville,
                        'email'=>$email,
                        'password'=>$password,
                        'token'=>$token                      
                    );
                $sql ='INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom,:ville,:email,:password,:token)';
                $req= $DB->insert($sql, $data);
                
                //envoi d'email.
                $mail_to =$email;
                $mail_subject  =" Validation de votre compte !!";
                $headers = "From : Ndameyong\r\n";
                $headers.="Reply-To:nkoayos@gmail.com \r\n";
                $headers.="MIME-Version 1.0\r\n";
                $headers.="Content-type: text/html;charset=utf-8\r\n";
                $mail_body ='Bonjour <br/> Veuillez ciquer sur <a href="http://localhost/ndameyong/activate.php?token='.$token.'&email='.$email.'"> le lien </a>pour activer votre compte ';

                if(mail($mail_to,$mail_subject,$mail_body,$headers)){
                    $_SESSION['message'] = " Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte ";
                    unset($_POST);
                }else{
                    $_SESSION['erreur'] = "Un problème est survenu lors de l'envoi d'email !.";
                }
            }

        }else{
            if(empty($_POST['password'])){
                $erreur_password  ='Un mot de passe est requis !.';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
            }

            if(empty($_POST['email'])){
                $erreur_email  ='Le champs email est requis !';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
            }else
                if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ){
                $erreur_email  ='Adresse Email non valide !';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
                }
        }
    }
    
 ?>


 <!-- message de session -->
<?php if (isset($_SESSION['message'])): ?>
  <div class="message"> <?php echo $_SESSION['message']; ?></div>
  <?php unset($_SESSION['message']) ?>
<?php endif ?>
<?php if (isset($_SESSION['erreur'])): ?>
  <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
  <?php unset($_SESSION['erreur']) ?>
<?php endif ?>


<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- reponsive meta-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Création de compte || Ndameyong - L'Ecole des Langues Camerounaises</title>

    <!-- Font Icon -->
    <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
    <link rel="stylesheet" href="fonts/material-icon/css/material-design-iconic-font.min.css">

    <!-- Main css -->
    <link rel="stylesheet" href="css/signup.css">
    
</head>
<body>

    <div class="main">
        <section class="signup">
            <!-- <img src="images/signup-bg.jpg" alt=""> -->
            <div class="container">
                <div class="signup-content">

                    <form action="signup.php" method="post" id="signup">
                        <h2 class="form-title"><a href="index.php"><span class ="moi">accueil du site</span></span></a></h2>
                        
                        <div class="form-group">
                            <input type="text" class="form-input" name="nom_prenom" id="nom_prenom" value="<?php echo isset($_POST['nom_prenom'])?$_POST['nom_prenom']:''; ?>" 
                            placeholder="Nom & Prénom"/>
                        </div>

                        <div class="form-group">
                            <input type="text" class="form-input" name="ville" id="ville" value="<?php echo isset($_POST['ville'])?$_POST['ville']:''; ?>" 
                            placeholder="Ville de Résidence"/>
                        </div>
                        <div class="form-group">
                            <input type="email" class="form-input" class="required" name="email" id="email" value="<?php echo isset($_POST['email'])?$_POST['email']:''; ?>" placeholder="Votre E-mail"/>
                        </div>
                            <?php if (!empty($erreur_email)): ?>
                                <div class="error"><?php echo $erreur_email; ?></div> 
                             <?php endif ?>

                        <div class="form-group">
                            <input type="Password" class="form-input" class="required" name="password" id="password" placeholder="Password"/>
                            <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
                        </div>

                            <?php if (!empty($erreur_password)): ?>
                                <div class="error"><?php echo $erreur_password; ?></div> 
                            <?php endif ?>

                        <p class="information">* Tous les champs sont requis</p>
                        <div class="form-group">
                            <input type="checkbox" name="agree-term" id="agree-term" class="agree-term" />
                            <label for="agree-term" class="label-agree-term"><span><span></span></span>Je m'inscris et je deviens membre de l'association Ndameyong  
                                <a href="statut_reglement.php" class="term-service">Statut & Règlement</a></label>
                        </div>

                        <div class="form-group">
                            <input type="submit" name="submit" id="submit" class="form-submit" value="Sign up"/>
                        </div>
                    </form>
                    <p class="loginhere">
                        Déja Membre ? <a href="login.php" class="loginhere-link">Connecte-toi ici</a>
                    </p>
                </div>
            </div>
        </section>

    </div>

    <!-- JS -->
    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="js/main.js"></script>
</body>
</html>


capture d'écran signup.php

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 10:41
Alors ...
Non seulement.. ce n'est pas le fichier Db que tu nous montres ....
Mais en plus.. tu n'as pas repris le code Exact que je t'avais donné pour celui la ..

Donc :
Modifie correctement le fichier Signup en reprenant ce que je t'avais donné
Et montres nous le fichier Db modifié ( là aussi en reprenant très précisément ce que je t'avais donné )

Une fois que ça sera fait... tu verras que l'affichage de ta page ne sera plus du tout pareil en cas d'erreur...
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 11:00
Salut,
les fichiers modifiés

signup.php
<?php require 'includes/includes.php';

?>
<?php 
    if(!empty($_POST)){

        if(!empty($_POST['password']) && ( filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ) ){

           

            $email= addslashes($_POST['email']);
            // modifier sha1 par Auth::hashPassword();
            $password = Auth::hashPassword($_POST['password']);
            $token = sha1(uniqid(rand()));

            $nom_prenom=addslashes($_POST['nom_prenom']);
            $ville = addslashes($_POST['ville']);
            

            $reponse = $DB->uniqueEmail($email);

            if($reponse !=0){
                $_SESSION['erreur'] = "Adresse email déja utilisée par un membre.";
            }else{

           $data = array(
                 ':nom_prenom'=>$nom_prenom,
                 ':ville'=>$ville,
                 ':email'=>$email,
                 ':password'=>$password,
                 ':token'=>$token                       
                 );
                $sql ='INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom, :ville, :email, :password, :token)';
                        $req= $DB->insert($sql , $data);

                //envoi d'email.
                $mail_to =$email;
                $mail_subject  =" Validation de votre compte !!";
                $headers = "From : Ndameyong\r\n";
                $headers.="Reply-To:nkoayos@gmail.com \r\n";
                $headers.="MIME-Version 1.0\r\n";
                $headers.="Content-type: text/html;charset=utf-8\r\n";
                $mail_body ='Bonjour <br/> Veuillez ciquer sur <a href="http://localhost/ndameyong/activate.php?token='.$token.'&email='.$email.'"> le lien </a>pour activer votre compte ';

                if(mail($mail_to,$mail_subject,$mail_body,$headers)){
                    $_SESSION['message'] = " Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte ";
                    unset($_POST);
                }else{
                    $_SESSION['erreur'] = "Un problème est survenu lors de l'envoi d'email !.";
                }
            }

        }else{
            if(empty($_POST['password'])){
                $erreur_password  ='Un mot de passe est requis !.';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
            }

            if(empty($_POST['email'])){
                $erreur_email  ='Le champs email est requis !';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
            }else
                if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) ){
                $erreur_email  ='Adresse Email non valide !';
                $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
                }
        }
    }
    
 ?>


 <!-- message de session -->
<?php if (isset($_SESSION['message'])): ?>
  <div class="message"> <?php echo $_SESSION['message']; ?></div>
  <?php unset($_SESSION['message']) ?>
<?php endif ?>
<?php if (isset($_SESSION['erreur'])): ?>
  <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
  <?php unset($_SESSION['erreur']) ?>
<?php endif ?>


<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- reponsive meta-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Création de compte || Ndameyong - L'Ecole des Langues Camerounaises</title>

    <!-- Font Icon -->
    <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
    <link rel="stylesheet" href="fonts/material-icon/css/material-design-iconic-font.min.css">

    <!-- Main css -->
    <link rel="stylesheet" href="css/signup.css">
    
</head>
<body>

    <div class="main">
        <section class="signup">
            <!-- <img src="images/signup-bg.jpg" alt=""> -->
            <div class="container">
                <div class="signup-content">

                    <form action="signup.php" method="post" id="signup">
                        <h2 class="form-title"><a href="index.php"><span class ="moi">accueil du site</span></span></a></h2>
                        
                        <div class="form-group">
                            <input type="text" class="form-input" name="nom_prenom" id="nom_prenom" value="<?php echo isset($_POST['nom_prenom'])?$_POST['nom_prenom']:''; ?>" 
                            placeholder="Nom & Prénom"/>
                        </div>

                        <div class="form-group">
                            <input type="text" class="form-input" name="ville" id="ville" value="<?php echo isset($_POST['ville'])?$_POST['ville']:''; ?>" 
                            placeholder="Ville de Résidence"/>
                        </div>
                        <div class="form-group">
                            <input type="email" class="form-input" class="required" name="email" id="email" value="<?php echo isset($_POST['email'])?$_POST['email']:''; ?>" placeholder="Votre E-mail"/>
                        </div>
                            <?php if (!empty($erreur_email)): ?>
                                <div class="error"><?php echo $erreur_email; ?></div> 
                             <?php endif ?>

                        <div class="form-group">
                            <input type="Password" class="form-input" class="required" name="password" id="password" placeholder="Password"/>
                            <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
                        </div>

                            <?php if (!empty($erreur_password)): ?>
                                <div class="error"><?php echo $erreur_password; ?></div> 
                            <?php endif ?>

                        <p class="information">* Tous les champs sont requis</p>
                        <div class="form-group">
                            <input type="checkbox" name="agree-term" id="agree-term" class="agree-term" />
                            <label for="agree-term" class="label-agree-term"><span><span></span></span>Je m'inscris et je deviens membre de l'association Ndameyong  
                                <a href="statut_reglement.php" class="term-service">Statut & Règlement</a></label>
                        </div>

                        <div class="form-group">
                            <input type="submit" name="submit" id="submit" class="form-submit" value="Sign up"/>
                        </div>
                    </form>
                    <p class="loginhere">
                        Déja Membre ? <a href="login.php" class="loginhere-link">Connecte-toi ici</a>
                    </p>
                </div>
            </div>
        </section>

    </div>

    <!-- JS -->
    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="js/main.js"></script>
</body>
</html>


Db.php
<?php
 
/**
* Gestion de la base de données
*/
class Db{
     
    private $host=HOST;
    private $name=DBNAME;
    private $user=USER;
    private $pass=PWD;
 
    private $connexion;
 
    function __construct($host=null,$name=null,$user=null,$pass=null){
         
        if($host != null){
            $this->host = $host;
            $this->name = $name;
            $this->user = $user;
            $this->pass = $pass;
        }
 
        try{
 
            $this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name,
                $this->user,$this->pass,array(
                    1002 =>'SET NAMES UTF8',
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING

                    ));
            $this->connexion->exec('SET NAMES utf8');
//PDO::MYSQL_ATTR_INIT_COMMAND
        }catch (PDOException $e){
            //echo 'Erreur : Impossible de se connecter  à la BD !';die();
            echo $e->getMessage();
        }

    }

    /* requete */
 
    public function query($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->fetchAll(PDO::FETCH_OBJ);
    }
 
    public function tquery($sql , $data=array()){
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->fetchAll(PDO::FETCH_ASSOC);
    }
 
     public function insert($sql , $data=array()){
      try{
        $req = $this->connexion->prepare($sql);
        return $req->execute($data);
      } catch(Exception $e){
        echo 'Erreur : '. $e->getMessage();
        echo '<br> Dans la requête :' . $sql;
        echo '<br> Avec les DATAS :';
        var_dump($data);
        exit;
      }
    }
	
	public function exec($sql , $data=array()){
      try{
        $req = $this->connexion->prepare($sql);
        $req->execute($data);
        return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête
      }catch(Exception $e){
        echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête !
      }
    }

    public function deleteuser($id){
       $sql = 'DELETE FROM users WHERE id=:id';
       $data = [':id'=>$id]; 
       return  $DB->exec($sql , $data) ;
    }

  public function uniqueEmail($email){
        $req = $this->connexion->prepare('SELECT count(*) as nbre from users WHERE email=:email limit 1');
        $req->execute(array('email'=>$email));
 
        $reponse = $req->fetchAll(PDO::FETCH_ASSOC);
        return $reponse[0]['nbre'];
 
    }


}

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 11:03
et donc, maintenant ?
Tu as quoi qui s'affiche ? Toujours des erreurs ? Si oui, toujours le même message ??

Pourrais tu, également nous donner le lien vers cette page ?
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 14:04
Salut,
J'ai toujours des erreurs....Voilà ce qui s'affiche:

1) Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\ndameyong\Classes\Db.php on line 58
2) Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in C:\wamp\www\ndameyong\Classes\Db.php on line 58

Pour le lien de la page étant en local je ne pense pas que le lien de cette page puisse s'ouvrir chez vous (http://127.0.0.1/ndameyong/signup.php)
je vous ai fait la capture de l’écran de la page singup.php

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 14:21
En local, je n'y aurais pas accès c'est clair...

Par contre,
Vu le code que je t'ai donné .... tu devrais avoir une page blanche avec le message d'erreur et des infos complémentaires...
La page que tu nous montres ne peut clairement pas être celle contenant le code que je t'ai donné..

Soit tu ne modofies pas le bon fichier .. soit tu as un cache quelque part...
Peux tu arrêter et relancer ton logiciel ( wamp, xampp, laragon.. ) et retester ?

Et, pour être sûr, peux tu modifier le fichier signup en ajoutant un exit après le insert ( comme ceci : )
  $data = array(
                 ':nom_prenom'=>$nom_prenom,
                 ':ville'=>$ville,
                 ':email'=>$email,
                 ':password'=>$password,
                 ':token'=>$token                       
                 );
                $sql ='INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom, :ville, :email, :password, :token)';
                        $req= $DB->insert($sql , $data);
                exit("TEST");
                //envoi d'email.

Si malgré ce "exit" .. tu as encore la même page qui s'affiche.. c'est que clairement tu n'es pas dans les bons fichiers !!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
12 août 2021 à 14:21
et au fait .. tu as cette erreur APRES avoir renseigné le formulaire .. ou avant ???
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 14:46
Salut,
je viens de remodifier le fichier signup en ajoutant exit ("TEST") et la j'ai la page blanche avec les messages d'erreurs

1) Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\ndameyong\Classes\Db.php on line 58

2) Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in C:\wamp\www\ndameyong\Classes\Db.php on line 58

Les erreurs apparaissent APRES avoir renseigné le formulaire
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 14:54
Tu es certain de modifier le bon fichier Db.php ??
Peux tu vérifier que tu n'en as pas un second qui traine quelque part et donc que tu ne modifies pas celui qui est appellé par ton script actuel ???

Tu as redémarré le logiciel comme je te l'ai demandé ??

Et à la limite.. pour être certain que tu édites le bon fichier db .... on va essayer de provoquer une erreur volontairement...
Donc, à la place de
class Db{
tu vas écrire :
class Db_err{ 

Après ça.. si tu n'as pas d'erreur.. c'est que tu ne modifies clairement pas le bon fichier !!
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 15:01
Je viens de remplacer class Db{ par class Db_err{
et j'ai ces erreurs

1) Fatal error: Uncaught Error: Class 'Db' not found in C:\wamp\www\ndameyong\includes\includes.php on line 6

2) Error: Class 'Db' not found in C:\wamp\www\ndameyong\includes\includes.php on line 6
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 15:11
Cependant j'ai une question,
Etant en local j'ai parametré php ini et sendmail avec une seul adresse gmail et un mot de passe. Avec ces informations, l'utilisateur admin se connecte sans problème, Cependant quand j'essaye d'inscrire un autre usager j'ai ces messages d'erreurs qui apparaissent du coup j'ai peur qu'en mettant ce site en ligne que les gens ne puissent pas s'inscrire.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 16:04
Peux tu remplacer ta class Db par celle la :

<?php

/**
 * Gestion de la base de données
 */
class Db {

  private $host = HOST;
  private $name = DBNAME;
  private $user = USER;
  private $pass = PWD;
  private $connexion;

  function __construct($host = null, $name = null, $user = null, $pass = null) {

    if ($host != null) {
      $this->host = $host;
      $this->name = $name;
      $this->user = $user;
      $this->pass = $pass;
    }

    try {
      $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name, $this->user, $this->pass);
      // Activation des erreurs PDO
      $this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
      $this->connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
      die('Erreur : ' . $e->getMessage());
    }
  }

  private function dbQuery($sql,$data=NULL){
    try {
      $prep = $this->connexion->prepare($sql);
      return $prep->execute($data);
    } catch (Exception $e) {
      echo 'Erreur : ' . $e->getMessage();
      echo '<br> Dans la requête :' . $sql;
      echo '<br> Avec les DATAS :';
      var_dump($data);
      exit;
    }
  }
  /* requete */

  public function query($sql, $data = array()) {
    $req = $this->connexion->prepare($sql);
    $req->execute($data);
    return $req->fetchAll(PDO::FETCH_OBJ);
  }

  public function tquery($sql, $data = array()) {
    $req = $this->dbQuery($sql,$data); 
    return $req->fetchAll(PDO::FETCH_ASSOC);
  }

  public function insert($sql, $data = array()) {
    return $this->dbQuery($sql,$data); 
  }

  public function exec($sql, $data = array()) {
    try {
      $req = $this->dbQuery($sql,$data); 
      return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête
    } catch (Exception $e) {
      echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête !
    }
  }

  public function deleteuser($id) {
    $sql = 'DELETE FROM users WHERE id=:id';
    $data = [':id' => $id];
    return $this->exec($sql, $data);
  }

  public function uniqueEmail($email) {
    $sql = 'SELECT count(*) as nbre from users WHERE email=:email limit 1';
    $data = array(':email' => $email);
    $req = $this->dbQuery($sql,$data); 
    $reponse = $req->fetch(PDO::FETCH_ASSOC);
    return !empty($reponse['nbre']) ? $reponse['nbre'] : 0;
  }
  
  public function createUser($nom_prenom,$ville,$email,$password,$token){
    $data = array(
            'nom_prenom'=>$nom_prenom,
            'ville'=>$ville,
            'email'=>$email,
            'password'=>$password,
            'token'=>$token,                        
        );
    $sql ='INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom,:ville,:email,:password,:token)';
     return $this->dbQuery($sql,$data);         
  }

}



Et dans ton signup.php, remplacer le code par ça
<?php
require 'includes/includes.php';


//récupération PROPRE des variables AVANT de les utiliser
$email = !empty($_POST['email']) ? addslashes(trim($_POST['email'])) : "";
$password = !empty($_POST['password']) ? addslashes(trim($_POST['password'])) : "";
$nom_prenom = !empty($_POST['nom_prenom']) ? addslashes($_POST['nom_prenom']) : "";
$ville = !empty($_POST['ville']) ? addslashes($_POST['ville']) : "";


if (!empty($_POST['email'])) {

  if (!empty($_POST['password']) && ( filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) )) {

    $password = Auth::hashPassword($password);
    $token = sha1(uniqid(rand()));

    $reponse = $DB->uniqueEmail($email);

    if ($reponse != 0) {
      $_SESSION['erreur'] = "Adresse email déja utilisée par un membre.";
    } else {

      $createUser = $BD->createUser($nom_prenom, $ville, $email, $password, $token);
      if ($createUser) {
        //envoi d'email.
        $mail_to = $email;
        $mail_subject = " Validation de votre compte !!";
        $headers = "From : Ndameyong\r\n";
        $headers .= "Reply-To:nkoayos@gmail.com \r\n";
        $headers .= "MIME-Version 1.0\r\n";
        $headers .= "Content-type: text/html;charset=utf-8\r\n";
        $mail_body = 'Bonjour <br/> Veuillez ciquer sur <a href="http://localhost/ndameyong/activate.php?token=' . $token . '&email=' . $email . '"> le lien </a>pour activer votre compte ';

        if (mail($mail_to, $mail_subject, $mail_body, $headers)) {
          $_SESSION['message'] = " Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte ";
          unset($_POST);
        } else {
          $_SESSION['erreur'] = "Un problème est survenu lors de l'envoi d'email !.";
        }
      } else {
        echo "Erreur lors de la création de l'utilisateur !";
        exit('Error!!!';
        )
      }
    }
  } else {
    if (empty($_POST['password'])) {
      $erreur_password = 'Un mot de passe est requis !.';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    }

    if (empty($_POST['email'])) {
      $erreur_email = 'Le champs email est requis !';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    } else
    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
      $erreur_email = 'Adresse Email non valide !';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    }
  }
}
?>

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- reponsive meta-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Création de compte || Ndameyong - L'Ecole des Langues Camerounaises</title>

    <!-- Font Icon -->
    <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
    <link rel="stylesheet" href="fonts/material-icon/css/material-design-iconic-font.min.css">

    <!-- Main css -->
    <link rel="stylesheet" href="css/signup.css">

  </head>
  <body>

    <!-- message de session -->
    <?php if (isset($_SESSION['message'])): ?>
      <div class="message"> <?php echo $_SESSION['message']; ?></div>
      <?php unset($_SESSION['message']) ?>
    <?php endif ?>
    <?php if (isset($_SESSION['erreur'])): ?>
      <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
      <?php unset($_SESSION['erreur']) ?>
<?php endif ?>

    <div class="main">
      <section class="signup">
          <!-- <img src="images/signup-bg.jpg" alt=""> -->
        <div class="container">
          <div class="signup-content">

            <form action="" method="post" id="signup">
              <h2 class="form-title"><a href="index.php"><span class ="moi">accueil du site</span></span></a></h2>

              <div class="form-group">
                <input type="text" class="form-input" name="nom_prenom" id="nom_prenom" value="<?php echo $nom_prenom; ?>" 
                       placeholder="Nom & Prénom"/>
              </div>

              <div class="form-group">
                <input type="text" class="form-input" name="ville" id="ville" value="<?php echo $ville; ?>" 
                       placeholder="Ville de Résidence"/>
              </div>
              <div class="form-group">
                <input type="email" class="form-input" class="required" name="email" id="email" value="<?php echo $email; ?>" placeholder="Votre E-mail"/>
              </div>
              <?php if (!empty($erreur_email)): ?>
                <div class="error"><?php echo $erreur_email; ?></div> 
<?php endif ?>

              <div class="form-group">
                <input type="Password" class="form-input" class="required" name="password" id="password" placeholder="Password"/>
                <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
              </div>

              <?php if (!empty($erreur_password)): ?>
                <div class="error"><?php echo $erreur_password; ?></div> 
<?php endif ?>

              <p class="information">* Tous les champs sont requis</p>
              <div class="form-group">
                <input type="checkbox" name="agree-term" id="agree-term" class="agree-term" />
                <label for="agree-term" class="label-agree-term"><span><span></span></span>Je m'inscris et je deviens membre de l'association Ndameyong  
                  <a href="statut_reglement.php" class="term-service">Statut & Règlement</a></label>
              </div>

              <div class="form-group">
                <input type="submit" name="submit" id="submit" class="form-submit" value="Sign up"/>
              </div>
            </form>
            <p class="loginhere">
              Déja Membre ? <a href="login.php" class="loginhere-link">Connecte-toi ici</a>
            </p>
          </div>
        </div>
      </section>

    </div>

    <!-- JS -->
    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="js/main.js"></script>
  </body>
</html>

0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 19:44
Bsr,
Je reviens vers vous après avoir fait des changements. Cependant, des erreurs sont apparues:
1) il est impossible de se connecter sur le site
- Fatal error: Uncaught Error: Call to a member function fetchAll() on bool in C:\wamp\www\ndameyong\Classes\Db.php on line 56

- Error: Call to a member function fetchAll() on bool in C:\wamp\www\ndameyong\Classes\Db.php on line 56

2) en essayant de valider le formulaire d'inscription, deux erreurs apparaissent dans la bdd
- Fatal error: Uncaught Error: Call to a member function fetch() on bool in C:\wamp\www\ndameyong\Classes\Db.php on line 82
- Error: Call to a member function fetch() on bool in C:\wamp\www\ndameyong\Classes\Db.php on line 82

signup.php
<?php
require 'includes/includes.php';


//récupération PROPRE des variables AVANT de les utiliser
$email = !empty($_POST['email']) ? addslashes(trim($_POST['email'])) : "";
$password = !empty($_POST['password']) ? addslashes(trim($_POST['password'])) : "";
$nom_prenom = !empty($_POST['nom_prenom']) ? addslashes($_POST['nom_prenom']) : "";
$ville = !empty($_POST['ville']) ? addslashes($_POST['ville']) : "";


if (!empty($_POST['email'])) {

  if (!empty($_POST['password']) && ( filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) )) {

    $password = Auth::hashPassword($password);
    $token = sha1(uniqid(rand()));

    $reponse = $DB->uniqueEmail($email);

    if ($reponse != 0) {
      $_SESSION['erreur'] = "Adresse email déja utilisée par un membre.";
    } else {

      $createUser = $BD->createUser($nom_prenom, $ville, $email, $password, $token);
      if ($createUser) {
        //envoi d'email.
        $mail_to = $email;
        $mail_subject = " Validation de votre compte !!";
        $headers = "From : Ndameyong\r\n";
        $headers .= "Reply-To:nkoayos@gmail.com \r\n";
        $headers .= "MIME-Version 1.0\r\n";
        $headers .= "Content-type: text/html;charset=utf-8\r\n";
        $mail_body = 'Bonjour <br/> Veuillez ciquer sur <a href="http://localhost/ndameyong/activate.php?token=' . $token . '&email=' . $email . '"> le lien </a>pour activer votre compte ';

        if (mail($mail_to, $mail_subject, $mail_body, $headers)) {
          $_SESSION['message'] = " Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte ";
          unset($_POST);
        } else {
          $_SESSION['erreur'] = "Un problème est survenu lors de l'envoi d'email !.";
        }
      } else {
        echo "Erreur lors de la création de l'utilisateur !";
        exit('Error!!!');
        
      }
    }
  } else {
    if (empty($_POST['password'])) {
      $erreur_password = 'Un mot de passe est requis !.';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    }

    if (empty($_POST['email'])) {
      $erreur_email = 'Le champs email est requis !';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    } else
    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
      $erreur_email = 'Adresse Email non valide !';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    }
  }
}
?>

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- reponsive meta-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Création de compte || Ndameyong - L'Ecole des Langues Camerounaises</title>

    <!-- Font Icon -->
    <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
    <link rel="stylesheet" href="fonts/material-icon/css/material-design-iconic-font.min.css">

    <!-- Main css -->
    <link rel="stylesheet" href="css/signup.css">

  </head>
  <body>

    <!-- message de session -->
    <?php if (isset($_SESSION['message'])): ?>
      <div class="message"> <?php echo $_SESSION['message']; ?></div>
      <?php unset($_SESSION['message']) ?>
    <?php endif ?>
    <?php if (isset($_SESSION['erreur'])): ?>
      <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
      <?php unset($_SESSION['erreur']) ?>
<?php endif ?>

    <div class="main">
      <section class="signup">
          <!-- <img src="images/signup-bg.jpg" alt=""> -->
        <div class="container">
          <div class="signup-content">

            <form action="" method="post" id="signup">
              <h2 class="form-title"><a href="index.php"><span class ="moi">accueil du site</span></span></a></h2>

              <div class="form-group">
                <input type="text" class="form-input" name="nom_prenom" id="nom_prenom" value="<?php echo $nom_prenom; ?>" 
                       placeholder="Nom & Prénom"/>
              </div>

              <div class="form-group">
                <input type="text" class="form-input" name="ville" id="ville" value="<?php echo $ville; ?>" 
                       placeholder="Ville de Résidence"/>
              </div>
              <div class="form-group">
                <input type="email" class="form-input" class="required" name="email" id="email" value="<?php echo $email; ?>" placeholder="Votre E-mail"/>
              </div>
              <?php if (!empty($erreur_email)): ?>
                <div class="error"><?php echo $erreur_email; ?></div> 
<?php endif ?>

              <div class="form-group">
                <input type="Password" class="form-input" class="required" name="password" id="password" placeholder="Password"/>
                <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
              </div>

              <?php if (!empty($erreur_password)): ?>
                <div class="error"><?php echo $erreur_password; ?></div> 
<?php endif ?>

              <p class="information">* Tous les champs sont requis</p>
              <div class="form-group">
                <input type="checkbox" name="agree-term" id="agree-term" class="agree-term" />
                <label for="agree-term" class="label-agree-term"><span><span></span></span>Je m'inscris et je deviens membre de l'association Ndameyong  
                  <a href="statut_reglement.php" class="term-service">Statut & Règlement</a></label>
              </div>

              <div class="form-group">
                <input type="submit" name="submit" id="submit" class="form-submit" value="Sign up"/>
              </div>
            </form>
            <p class="loginhere">
              Déja Membre ? <a href="login.php" class="loginhere-link">Connecte-toi ici</a>
            </p>
          </div>
        </div>
      </section>

    </div>

    <!-- JS -->
    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="js/main.js"></script>
  </body>
</html>


Db.php
<?php

/**
 * Gestion de la base de données
 */
class Db {

  private $host = HOST;
  private $name = DBNAME;
  private $user = USER;
  private $pass = PWD;
  private $connexion;

  function __construct($host = null, $name = null, $user = null, $pass = null) {

    if ($host != null) {
      $this->host = $host;
      $this->name = $name;
      $this->user = $user;
      $this->pass = $pass;
    }

    try {
      $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name, $this->user, $this->pass);
      // Activation des erreurs PDO
      $this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
      $this->connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
      die('Erreur : ' . $e->getMessage());
    }
  }

  private function dbQuery($sql,$data=NULL){
    try {
      $prep = $this->connexion->prepare($sql);
      return $prep->execute($data);
    } catch (Exception $e) {
      echo 'Erreur : ' . $e->getMessage();
      echo '<br> Dans la requête :' . $sql;
      echo '<br> Avec les DATAS :';
      var_dump($data);
      exit;
    }
  }
  /* requete */

  public function query($sql, $data = array()) {
    $req = $this->connexion->prepare($sql);
    $req->execute($data);
    return $req->fetchAll(PDO::FETCH_OBJ);
  }

  public function tquery($sql, $data = array()) {
    $req = $this->dbQuery($sql,$data); 
    return $req->fetchAll(PDO::FETCH_ASSOC);
  }

  public function insert($sql, $data = array()) {
    return $this->dbQuery($sql,$data); 
  }

  public function exec($sql, $data = array()) {
    try {
      $req = $this->dbQuery($sql,$data); 
      return $req->rowCount(); // Retourne le nombre de lignes impactées par la reuqête
    } catch (Exception $e) {
      echo 'Erreur : ' . $e->getMessage(); // en cas d'erreur dans la requête !
    }
  }

  public function deleteuser($id) {
    $sql = 'DELETE FROM users WHERE id=:id';
    $data = [':id' => $id];
    return $this->exec($sql, $data);
  }

  public function uniqueEmail($email) {
    $sql = 'SELECT count(*) as nbre from users WHERE email=:email limit 1';
    $data = array(':email' => $email);
    $req = $this->dbQuery($sql,$data); 
    $reponse = $req->fetch(PDO::FETCH_ASSOC);
    return !empty($reponse['nbre']) ? $reponse['nbre'] : 0;
  }
  
  public function createUser($nom_prenom,$ville,$email,$password,$token){
    $data = array(
            'nom_prenom'=>$nom_prenom,
            'ville'=>$ville,
            'email'=>$email,
            'password'=>$password,
            'token'=>$token,                        
        );
    $sql ='INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom,:ville,:email,:password,:token)';
     return $this->dbQuery($sql,$data);         
  }

}
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 20:43
petite erreur de ma part.
Faut corriger la fonction dbQuery
  private function dbQuery($sql,$data=NULL){
    try {
      $prep = $this->connexion->prepare($sql);
      $prep->execute($data);
       return $prep;
    } catch (Exception $e) {
      echo 'Erreur : ' . $e->getMessage();
      echo '<br> Dans la requête :' . $sql;
      echo '<br> Avec les DATAS :';
      var_dump($data);
      exit;
    }
  }
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 21:23
Trois nouvelles erreurs sur le fichier signup.php

1) Notice: Undefined variable: BD in C:\wamp\www\ndameyong\signup.php on line 25
2) Fatal error: Uncaught Error: Call to a member function createUser() on null in C:\wamp\www\ndameyong\signup.php on line 25
3) Error: Call to a member function createUser() on null in C:\wamp\www\ndameyong\signup.php on line 25

signup.php
<?php
require 'includes/includes.php';


//récupération PROPRE des variables AVANT de les utiliser
$email = !empty($_POST['email']) ? addslashes(trim($_POST['email'])) : "";
$password = !empty($_POST['password']) ? addslashes(trim($_POST['password'])) : "";
$nom_prenom = !empty($_POST['nom_prenom']) ? addslashes($_POST['nom_prenom']) : "";
$ville = !empty($_POST['ville']) ? addslashes($_POST['ville']) : "";


if (!empty($_POST['email'])) {

  if (!empty($_POST['password']) && ( filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) )) {

    $password = Auth::hashPassword($password);
    $token = sha1(uniqid(rand()));

    $reponse = $DB->uniqueEmail($email);

    if ($reponse != 0) {
      $_SESSION['erreur'] = "Adresse email déja utilisée par un membre.";
    } else {

      $createUser = $BD->createUser($nom_prenom, $ville, $email, $password, $token);
      if ($createUser) {
        //envoi d'email.
        $mail_to = $email;
        $mail_subject = " Validation de votre compte !!";
        $headers = "From : Ndameyong\r\n";
        $headers .= "Reply-To:nkoayos@gmail.com \r\n";
        $headers .= "MIME-Version 1.0\r\n";
        $headers .= "Content-type: text/html;charset=utf-8\r\n";
        $mail_body = 'Bonjour <br/> Veuillez ciquer sur <a href="http://localhost/ndameyong/activate.php?token=' . $token . '&email=' . $email . '"> le lien </a>pour activer votre compte ';

        if (mail($mail_to, $mail_subject, $mail_body, $headers)) {
          $_SESSION['message'] = " Un émail a été envoyé a votre méssagerie avec des instructions pour activer votre compte ";
          unset($_POST);
        } else {
          $_SESSION['erreur'] = "Un problème est survenu lors de l'envoi d'email !.";
        }
      } else {
        echo "Erreur lors de la création de l'utilisateur !";
        exit('Error!!!' );
       
      }
    }
  } else {
    if (empty($_POST['password'])) {
      $erreur_password = 'Un mot de passe est requis !.';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    }

    if (empty($_POST['email'])) {
      $erreur_email = 'Le champs email est requis !';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    } else
    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
      $erreur_email = 'Adresse Email non valide !';
      $_SESSION['erreur'] = ' Veuillez corriger les érreurs .';
    }
  }
}
?>

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- reponsive meta-->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Création de compte || Ndameyong - L'Ecole des Langues Camerounaises</title>

    <!-- Font Icon -->
    <link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
    <link rel="stylesheet" href="fonts/material-icon/css/material-design-iconic-font.min.css">

    <!-- Main css -->
    <link rel="stylesheet" href="css/signup.css">

  </head>
  <body>

    <!-- message de session -->
    <?php if (isset($_SESSION['message'])): ?>
      <div class="message"> <?php echo $_SESSION['message']; ?></div>
      <?php unset($_SESSION['message']) ?>
    <?php endif ?>
    <?php if (isset($_SESSION['erreur'])): ?>
      <div class="errorMessage"> <?php echo $_SESSION['erreur']; ?></div>
      <?php unset($_SESSION['erreur']) ?>
<?php endif ?>

    <div class="main">
      <section class="signup">
          <!-- <img src="images/signup-bg.jpg" alt=""> -->
        <div class="container">
          <div class="signup-content">

            <form action="" method="post" id="signup">
              <h2 class="form-title"><a href="index.php"><span class ="moi">accueil du site</span></span></a></h2>

              <div class="form-group">
                <input type="text" class="form-input" name="nom_prenom" id="nom_prenom" value="<?php echo $nom_prenom; ?>" 
                       placeholder="Nom & Prénom"/>
              </div>

              <div class="form-group">
                <input type="text" class="form-input" name="ville" id="ville" value="<?php echo $ville; ?>" 
                       placeholder="Ville de Résidence"/>
              </div>
              <div class="form-group">
                <input type="email" class="form-input" class="required" name="email" id="email" value="<?php echo $email; ?>" placeholder="Votre E-mail"/>
              </div>
              <?php if (!empty($erreur_email)): ?>
                <div class="error"><?php echo $erreur_email; ?></div> 
<?php endif ?>

              <div class="form-group">
                <input type="Password" class="form-input" class="required" name="password" id="password" placeholder="Password"/>
                <span toggle="#password" class="zmdi zmdi-eye field-icon toggle-password"></span>
              </div>

              <?php if (!empty($erreur_password)): ?>
                <div class="error"><?php echo $erreur_password; ?></div> 
<?php endif ?>

              <p class="information">* Tous les champs sont requis</p>
              <div class="form-group">
                <input type="checkbox" name="agree-term" id="agree-term" class="agree-term" />
                <label for="agree-term" class="label-agree-term"><span><span></span></span>Je m'inscris et je deviens membre de l'association Ndameyong  
                  <a href="statut_reglement.php" class="term-service">Statut & Règlement</a></label>
              </div>

              <div class="form-group">
                <input type="submit" name="submit" id="submit" class="form-submit" value="Sign up"/>
              </div>
            </form>
            <p class="loginhere">
              Déja Membre ? <a href="login.php" class="loginhere-link">Connecte-toi ici</a>
            </p>
          </div>
        </div>
      </section>

    </div>

    <!-- JS -->
    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="js/main.js"></script>
  </body>
</html>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 21:42
Ligne 25 remplace BD par DB
Ça tu aurais pu le voir sans avoir besoin de mon aide
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
12 août 2021 à 22:40
Salut,
Après la correction que vous avez apporté,
ces erreurs apparaissent sur le fichier signup.php
quand on valide le formulaire

1) Erreur : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
Dans la requête :INSERT INTO users (nom_prenom,ville,email,password,token) VALUES(:non_prenom,:ville,:email,:password,:token)
Avec les DATAS :

2) C:\wamp\www\ndameyong\Classes\Db.php:43:
array (size=5)
'nom_prenom' => string 'azzeerty' (length=8)
'ville' => string 'foey' (length=4)
'email' => string 'azerrt@gmail.com' (length=16)
'password' => string '35e3fe743b737b48b579be0bef0b51236c587f88' (length=40)
'token' => string '55ac6ee539d171c7bf113f22fb71bdaa7e2d4345' (length=40)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 août 2021 à 22:52
Ah enfin, on a le message d'erreur complet...
Et en effet en le lisant maintenant je vois où se trouve le souci.
C'est avec le nom du premier paramètre de ta requête
Tu as écrit non_prenom. Au lieu de nom_prenom
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
13 août 2021 à 00:07
Bsr,
Problème résolu, merci!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 août 2021 à 00:15
Et bien pense à mettre le sujet en résolu.
Et inspire-toi du code que je t'ai donné pour tes prochains développements...
0
janyduchemin Messages postés 36 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 6 septembre 2023 1
13 août 2021 à 01:28
Merci, je tiendrai compte.
0