Menu

Source php

-
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
Afficher la suite 

Votre réponse

2 réponses

Messages postés
25293
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 avril 2019
1957
0
Merci
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



Commenter la réponse de jordane45
Messages postés
15453
Date d'inscription
jeudi 14 juillet 2011
Statut
Contributeur
Dernière intervention
24 avril 2019
5139
Commenter la réponse de ^Abel^