Deux erreurs en ligne 58
Résolu
janyduchemin
-
janyduchemin Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
janyduchemin Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Salut
j'ai deux erreurs en ligne 58 sur signup.php
voila mon fichier Db.php
signup.php
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:
- Deux erreurs en ligne 58
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Deux ecran pc - Guide
- Formulaire en ligne de meta - Guide
- Comment faire deux colonnes sur word - Guide
16 réponses
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 ":"
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);
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
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
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; } }
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)
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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é
capture d'écran signup.php

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

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...
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...
Salut,
les fichiers modifiés
signup.php
Db.php
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']; } }
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

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

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 : )
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 !!
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 !!
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
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
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
Après ça.. si tu n'as pas d'erreur.. c'est que tu ne modifies clairement pas le bon fichier !!
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 !!
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
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
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.
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.
Peux tu remplacer ta class Db par celle la :
Et dans ton signup.php, remplacer le code par ça
<?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>
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
Db.php
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); } }
petite erreur de ma part.
Faut corriger la fonction dbQuery
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; } }
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
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>
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)
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)