Source php

seydou -  
^Abel^ Messages postés 15278 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

<?php
 try {
  $connect= new PDO("mysql:host=localhost; dbname=donnees; charset=utf8", 'root', '');
  $connect->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  if ($connect) {
   echo "reussie!";
  }
 $nom=htmlspecialchars($_POST['nom']);
 $prenom=htmlspecialchars($_POST['prenoms']);
 $email=htmlspecialchars($_POST['email']);
 $daten=htmlspecialchars($_POST['daten']);
 $fonction=htmlspecialchars($_POST['fonction']);
 $matricule=htmlspecialchars($_POST['matricule']);
 $mot_passe=sha1($_POST['password']);
 $confirmation=sha1($_POST['mdp']);

 $requete=$connect->prepare("INSERT INTO coordonnees(nom, prenoms, email, date_n, fonction, matricule, mot_passe, confirmation) VALUES (:nom, :prenoms, :email, :daten, :fonction, :matricule, :password, :mdp)");
 $requete->execute(array('nom' => $nom ,
       'prenom' => $prenom ,
       'email' => $email ,
       'daten' => $daten ,
       'fonction' => $fonction ,
       'matricule' => $matricule ,
       'password' => $mot_passe ,
       'mdp' => $confirmation ,));
  
 } catch (Exception $e) {
  die('ERROR :' .$e->getMessage());
  
 }


 ?>


ci-dessous le message d'erreur

ERROR :SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

EDIT : Ajout des balises de code

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Il y aurait beaucoup de choses à dire sur ton code....
    Comme le fait qu'on n'utilise PAS la fonction htmlspecialchar pour insérer des données ( on ne s'en sert que pour de l'affichage !! )

    mais déjà, concernant l'erreur.... c'est du au fait que tu n'as pas utilisé les même noms de variables dans la requete ET dans l'array de l'execute...

    Voici
    $sql = "INSERT INTO coordonnees(nom, prenoms, email, date_n, fonction, matricule, mot_passe, confirmation) 
    VALUES (:nom, :prenoms, :email, :daten, :fonction, :matricule, :password, :mdp)";
    $datas = array(
           ':nom' => $nom ,
           ':prenoms' => $prenom ,
           ':email' => $email ,
           ':daten' => $daten ,
           ':fonction' => $fonction ,
           ':matricule' => $matricule ,
           ':password' => $mot_passe ,
           ':mdp' => $confirmation
    	 );
    
    try{
       $requete=$connect->prepare($sqm);
       $requete->execute($datas);
    }catch (Exception $e) {
       die('ERROR :' .$e->getMessage()); 
    }
    


    et on n’utilise pas le sha1 pour les passwords !
    Désormais il faut passer par password_verify et password_hash.
    (pour que ça fonctionne correctement il faut une version php supérieur à 5.5 )
    https://www.php.net/manual/fr/function.password-hash.php

    Dans l'idéal, on travaille désormais en php 7 ( 7.3 ) qui est trois fois plus rapide que la version php 5

    0
  2. ^Abel^ Messages postés 15278 Date d'inscription   Statut Contributeur Dernière intervention   6 927
     
    Bonjour.
    Seydou répond ici ;)
    https://www.commentcamarche.net/forum/affich-35962386-remerciment
    0