1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /></head>
<body><!--Séparer le code html du code php -->
<form action="" method="post">
<p>Family name: <input type="text" name="FamilyName" maxlength="16" /></p>
<p><input type="submit" name="Register" value="Enter" /></p>
</form>
<?php
define('BDHost',"localhost");
define('BDUser',"...");
define('BDPass',"...");
define('BDName',"...");
// 1- Petit formulaire d'entrée, ci-dessous:
try {
$bdd = new PDO('mysql:host='.BDHost.';dbname='.BDName, BDUser, '
', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')//encodage en utf8
);
} catch(Exception $e) {
exit('Impossible de se connecter à la base de données.');
}
// 2- Réception du POST avec un SANITIZE, vérification si déjà présent dans la BD, sinon echo formulaire de confirmation d'entrée.
if (isset($_POST['Register'])) {
$FamilyName=htmlspecialchars($_POST['FamilyName']);
$Result=$bdd->prepare("SELECT * FROM members WHERE FamilyName=:family");//préparation propre de la requête, pas de variables concaténé !!!
$Result->bindParam(":family",$FamilyName,PDO::PARAM_STR);//PDO::PARAM_STR est l'équivalent de filter_var... en PDO
$Result->execute();
$N=$Result->rowCount();
if ($N==0) {
?>
<form action="" method="post">
<input type="text" name="FamilyName" value="<?=$FamilyName;?>" /><!-- l'input est visible juste pour voir à quoi ressemble ce qu'on vient d'écrire...., tu peux le mettre en hidden comme au départ...-->
<p><input type="submit" name="RegistConfirm" value="Confirm." /></p>
</form>
<?php
}
else{
?>
<a style='color:red;font-size:15px'>Ce Nom existe déjà !</a>
<?php
}
}
// 3- Réception du POST sans SANITIZE (puisque déjà éffectué), vérification si déjà présent dans la BD, sinon insertion dans la BD.
if (isset($_POST['RegistConfirm'])) {
$FamilyName=htmlspecialchars($_POST['FamilyName']);
$Result=$bdd->prepare('SELECT * FROM members WHERE FamilyName=?');
$Result->execute([$FamilyName]);
$N=$Result->rowCount();
if ($N==0) {
$Action=$bdd->prepare('INSERT INTO members (FamilyName) VALUES (:family)');//préparation propre de la requête, pas de variables concaténé !!!
$Action->bindValue(':family',$FamilyName,PDO::PARAM_STR);
$RegDone=$Action->execute();
} else{
?>
<a style='color:red;font-size:15px'>(RegistreConfirm) : Ce Nom existe déjà !</a>
<?php
}
}
$bdd=null;
?>
</body>
</html> |
Partager