Remplir une table
Remplir la table "clients"
Ajouter des enregistrements
Ajouter des enregistrements dans une table MySQL avec l'extension PDO
Le fichier inscription.php<h2>Inscription</h2>
<form action="index.php?page=public/clients/traitement_inscription.php" method="post">
Civilité <select name="civilite" style="width:130px;">
<option value="Monsieur">Monsieur</option>
<option value="Madame">Madame</option></select><br><br>
Prénom <input type="text" name="prenom" style="width:130px;"><br><br>
Nom <input type="text" name="nom" style="width:130px;"><br><br>
Email <input type="email" name="email" style="width:130px;"><br><br>
MdP <input type="password" name="mdp" style="width:130px;"><br><br>
<button type="submit">Envoyer</button></form>
Le fichier login.php
<?php
$user = 'root';
$pass = '';
$table = 'clients';
$bdd = new PDO('mysql:dbname=mabase;host=localhost;charset=utf8', $user, $pass);
?>
<?php
require('public/config/login.php');
$civilite = $_POST['civilite'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = '3 bvd gambetta';
$cp = 75022;
$ville = 'Paris';
$email = $_POST['email'];
$mdp = $_POST['mdp'];
$requete = 'INSERT INTO '.$table.'(id_clients, titre_clients, nom_clients, prenom_clients, adresse_clients, cp_clients, ville_clients, email_clients, mdp_clients) VALUES(null,"'.$civilite.'","'.$nom.'","'.$prenom.'","'.$adresse.'","'.$cp.'","'.$ville.'","'.$email.'", SHA1("'.$mdp.'"))';
$resultat = $bdd -> prepare($requete);
$resultat -> execute();
header('Location: index.php?page=public/clients/liste_client.php');
?>
Note : Le serveur MySQL accepte d'ajouter des enregistrements sans l'instruction Oracle "COMMIT" (et "ROLLBACK" pour supprimer). On dit que par défaut, MySQL est lancé en mode autocommit. Plus d'infos sur dev.MySQL.com
Fonctions de cryptage PHP
Pour une bonne sécurité, il est fortement recommandé d'utilise les fonctions de cryptage PHP. ⚠ chiffrage non réversible. Il n'existe pas de fonction de déchiffrement, car ces fonctions utilisent un algorithme à un seul sens.
Fonction PHP md5()
La fonction PHP md5() est identique à la fonction SQL MD5
$hashed_password = md5($password);
$requete = 'INSERT INTO matable(mdp_clients) VALUES("'.$hashed_password.'")';
Fonction PHP sha1()
La fonction PHP sha1() est identique à la fonction SQL SHA1
$hashed_password = sha1($password);
$requete = 'INSERT INTO matable(mdp_clients) VALUES("'.$hashed_password.'")';
Pourquoi les fonctions traditionnelles de hachage comme md5() et sha1() sont-elles inappropriées aux mots de passe ?
Les algorithmes de hachage comme MD5, SHA1 et SHA256 sont destinés à être rapides et efficaces. Avec les équipements informatiques modernes, il est devenu facile d'attaquer par force brute la sortie de ces algorithmes pour retrouver la chaîne originale.
C'est la raison pour laquelle de nombreux experts en sécurité considèrent ces algorithmes comme faibles et les déconseillent fortement pour hacher un mot de passe utilisateur.
Alors, comment hacher mes mots de passe ?
On utilise la fonction PHP crypt(), qui supporte différents algorithmes de hachage depuis PHP 5.3 comme l'algorithme Blowfish ou, encore mieux, la fonction password_hash() qui créée un algorithme aléatoire.
Fonction PHP crypt()
La fonction php crypt() utilise un grain de sel. Un grain de sel, ou "salt", en cryptographie, est appliqué durant le processus de hachage pour éliminer la possibilité d'attaques par dictionnaires
En d'autres termes, un grain de sel est une petite donnée additionnelle qui renforce significativement la puissance du hachage pour le rendre beaucoup plus difficile à cracker.
$hashed_password = crypt($password);
$requete = 'INSERT INTO matable(mdp_clients) VALUES("'.$hashed_password.'")';
$hashed_password = crypt($password, 'macle');
$requete = 'INSERT INTO matable(mdp_clients) VALUES("'.$hashed_password.'")';
Fonction PHP password_hash()
Idéalement on utilise directement la fonction php password_hash() qui va créer un salt aléatoire si vous n'en fournissez pas, et c'est généralement la façon la plus sécurisée et la plus simple à utiliser.
$hashToStoreInDb = password_hash($password, PASSWORD_DEFAULT);