Amélioration du formulaire d'inscription
Résolu/Fermé
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
-
23 juin 2016 à 14:47
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 29 juin 2016 à 20:56
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 29 juin 2016 à 20:56
A voir également:
- Amélioration du formulaire d'inscription
- Wetransfer gratuit sans inscription - Guide
- WeTransfer - Télécharger - Téléchargement & Transfert
- Instagram inscription - Guide
- Twitter inscription - Guide
- Facebook inscription - Guide
3 réponses
nicelife90
Messages postés
615
Date d'inscription
vendredi 24 septembre 2010
Statut
Membre
Dernière intervention
10 avril 2018
151
23 juin 2016 à 18:03
23 juin 2016 à 18:03
Bonjour,
J'ai apporter quelque modification à ton code.
J'ai utilisé bootstrap pour faire la mise en forme de ton formulaire plutôt qu'un tableau ce ci permet en autre de rendre ta page responsive (Compatible avec tous les appareils).
J'ai aussi utiliser la librairie fontawsome pour les icônes du formulaire.
Je porte aussi ton attention sur un aspect de sécurité que j'ai ajouté sur ton formulaire.
Voici les sites qui pourrais t'aider a comprends ce que j'ai fais.
https://getbootstrap.com/
https://fontawesome.com/icons?from=io
https://fr.wikipedia.org/wiki/Cross-site_request_forgery
J'ai apporter quelque modification à ton code.
J'ai utilisé bootstrap pour faire la mise en forme de ton formulaire plutôt qu'un tableau ce ci permet en autre de rendre ta page responsive (Compatible avec tous les appareils).
J'ai aussi utiliser la librairie fontawsome pour les icônes du formulaire.
Je porte aussi ton attention sur un aspect de sécurité que j'ai ajouté sur ton formulaire.
Voici les sites qui pourrais t'aider a comprends ce que j'ai fais.
https://getbootstrap.com/
https://fontawesome.com/icons?from=io
https://fr.wikipedia.org/wiki/Cross-site_request_forgery
<?php session_start(); $bdd = new PDO('mysql:host=127.0.0.1;dbname=site1', 'root', 'annexe'); if (isset($_POST['validation']) && $_SESSION['csrf'] == $_POST['csrf']) { if (!empty($_POST['prenom']) && !empty($_POST['non']) && !empty($_POST['pseudo']) && !empty($_POST['age']) && $_POST['sexe'] != -1 && !empty($_POST['mail']) && !empty($_POST['mail2']) && !empty($_POST['mdp']) && !empty($_POST['mdp2']) ) { $prenom = htmlspecialchars($_POST['prenom']); $nom = htmlspecialchars($_POST['nom']); $pseudo = htmlspecialchars($_POST['pseudo']); $sexe = htmlspecialchars($_POST['sexe']); $age = htmlspecialchars($_POST['age']); $mail = htmlspecialchars($_POST['mail']); $mail2 = htmlspecialchars($_POST['mail2']); $mdp = sha1($_POST['mdp']); $mdp2 = sha1($_POST['mdp2']); $pseudolength = strlen($pseudo); if ($pseudolength <= 15) { $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?"); $reqpseudo->execute([$pseudo]); $pseudoexist = $reqpseudo->rowCount(); if ($pseudoexist == 0) { if ($mail == $mail2) { if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?"); $reqmail->execute([$mail]); $mailexist = $reqmail->rowCount(); if ($mailexist == 0) { if ($mdp == $mdp2) { $insertmbr = $bdd->prepare("INSERT INTO membres(nom, prenom, pseudo, sexe, age, mail, motdepasse) VALUES(?, ?, ?, ?, ?, ?, ?)"); $insertmbr->execute([$nom, $prenom, $pseudo, $sexe, $age, $mail, $mdp]); $info = "Votre compte a bien été crée !"; } else { $erreur = "Le mot de passe ne correspond pas !"; } } else { $erreur = "L'adresse mail est dèja uttiliser !"; } } else { $erreur = "L'adresse mail est dèja uttiliser !"; } } else { $erreur = "L'adresse mail ne correspond pas !"; } } else { $erreur = "Pseudo déjà utilisée !"; } } else { $erreur = "Votre pseudo ne doit pas dépasser 15 caractères !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> <title>Titre de la page</title> <!-- Bootstrap --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <script src="https://use.fontawesome.com/e289ddff21.js"></script> </head> <body> <div class="container-fluid"> <div class="row"> <div class="col-md-6 col-md-offset-3"> <h1>Inscription</h1> <?php /*************************************************************************** ********************************* CSRF / DBL POST PROTECTION *************** ***************************************************************************/ $_SESSION['csrf'] = uniqid('csfr', true); /*************************************************************************** *************************************************************************** ***************************************************************************/ if (isset($info)) { echo '<div class="alert alert-success alert-dismissible" role="alert">'.$info.'</div>'; } if (isset($erreur)) { echo '<div class="alert alert-danger alert-dismissible" role="alert">'.$erreur.'</div>'; } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="hidden" name="csrf" value="<?php echo $_SESSION['csrf']; ?>"> <div class="row"> <div class="col-md-6"> <label for="prenom">Prénom :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i> </span> <input class="form-control" type="text" placeholder="Votre prénom" id="prenom" name="prenom"/> </div> </div> <div class="col-md-6"> <label for="nom">Nom :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="text" placeholder="Votre nom" id="nom" name="nom"/> </div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="pseudo">Pseudo :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i> </span> <input class="form-control" type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo"/> </div> </div> <div class="col-md-6"> <label for="age">Age :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i> </span> <input class="form-control" type="number" placeholder="Votre age" id="age" name="age"/> </div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="sexe">Sexe :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <select name="sexe" class="form-control" id="sexe"> <option value="-1">Votre sexe</option> <option value="F">Femme</option> <option value="H">Homme</option> </select> </div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="mail">E-mail :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="email" placeholder="Votre adresse mail :" id="mail" name="mail"/></div> </div> <div class="col-md-6"> <label for="mail2">Répetez votre adresse mail :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="email" placeholder="Répetez votre mail" id="mail2" name="mail2"/></div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="mdp">Mot de passe :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="password" placeholder="Mot de passe" id="mdp" name="mdp"/></div> </div> <div class="col-md-6"> <label for="mdp2">Répéter votre mot de passe :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="password" placeholder="Répéter mot de passe" id="mdp2" name="mdp2"/></div> </div> </div> <br/> <div class="row"> <div class="col-md-12"> <input class="btn btn-primary" type="submit" name="validation" value="Je m'inscris"/> <a class="btn btn-success" href="index.php">Se connecter</a> </div> </div> </form> </div> </div> </div> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> </body> </html>
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
23 juin 2016 à 22:18
23 juin 2016 à 22:18
Re donc j'ai essayer de modifier mais ça me dit "Votre compte a bien été crée !" dans la base de donnée il y a rien.
Donc ça veux dire que il y a un problème.
voici le code complet :
Donc ça veux dire que il y a un problème.
voici le code complet :
<?php session_start(); $bdd = new PDO('mysql:host=127.0.0.1;dbname=site1;charset=utf8', 'root', ''); if (isset($_POST['validation']) && $_SESSION['csrf'] == $_POST['csrf']) { if (!empty($_POST['prenom']) && !empty($_POST['nom']) && !empty($_POST['pseudo']) && !empty($_POST['age']) && $_POST['sexe'] != -1 && !empty($_POST['mail']) && !empty($_POST['mail2']) && !empty($_POST['mdp']) && !empty($_POST['mdp2']) ) { $prenom = htmlspecialchars($_POST['prenom']); $nom = htmlspecialchars($_POST['nom']); $pseudo = htmlspecialchars($_POST['pseudo']); $sexe = htmlspecialchars($_POST['sexe']); $age = htmlspecialchars($_POST['age']); $mail = htmlspecialchars($_POST['mail']); $mail2 = htmlspecialchars($_POST['mail2']); $mdp = sha1($_POST['mdp']); $mdp2 = sha1($_POST['mdp2']); $pseudolength = strlen($pseudo); $ip = $_SERVER['REMOTE_ADDR']; $temps = 'NOW()'; if ($pseudolength <= 15) { $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?"); $reqpseudo->execute([$pseudo]); $pseudoexist = $reqpseudo->rowCount(); if ($pseudoexist == 0) { if ($mail == $mail2) { if (filter_var($mail, FILTER_VALIDATE_EMAIL)) { $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?"); $reqmail->execute([$mail]); $mailexist = $reqmail->rowCount(); if ($mailexist == 0) { if ($mdp == $mdp2) { $insertmbr = $bdd->prepare("INSERT INTO membres(nom, prenom, pseudo, sexe, age, mail, motdepasse, ip, temps) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"); $insertmbr->execute([$nom, $prenom, $pseudo, $sexe, $age, $mail, $mdp, $ip, $temps]); $info = "Votre compte a bien été crée !"; } else { $erreur = "Le mot de passe ne correspond pas !"; } } else { $erreur = "L'adresse mail est dèja uttiliser !"; } } else { $erreur = "L'adresse mail est dèja uttiliser !"; } } else { $erreur = "L'adresse mail ne correspond pas !"; } } else { $erreur = "Pseudo déjà utilisée !"; } } else { $erreur = "Votre pseudo ne doit pas dépasser 15 caractères !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> <title>Inscription</title> <!-- Bootstrap --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <script src="https://use.fontawesome.com/e289ddff21.js"></script> </head> <body> <div class="container-fluid"> <div class="row"> <div class="col-md-6 col-md-offset-3"> <h1>Inscription</h1> <?php /*************************************************************************** ********************************* CSRF / DBL POST PROTECTION *************** ***************************************************************************/ $_SESSION['csrf'] = uniqid('csfr', true); /*************************************************************************** *************************************************************************** ***************************************************************************/ if (isset($info)) { echo '<div class="alert alert-success alert-dismissible" role="alert">'.$info.'</div>'; } if (isset($erreur)) { echo '<div class="alert alert-danger alert-dismissible" role="alert">'.$erreur.'</div>'; } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <input type="hidden" name="csrf" value="<?php echo $_SESSION['csrf']; ?>"> <div class="row"> <div class="col-md-6"> <label for="prenom">Prénom :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i> </span> <input class="form-control" type="text" placeholder="Votre prénom" id="prenom" name="prenom"/> </div> </div> <div class="col-md-6"> <label for="nom">Nom :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="text" placeholder="Votre nom" id="nom" name="nom"/> </div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="pseudo">Pseudo :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i> </span> <input class="form-control" type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo"/> </div> </div> <div class="col-md-6"> <label for="age">Age :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i> </span> <input class="form-control" type="number" placeholder="Votre age" id="age" name="age"/> </div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="sexe">Sexe :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <select name="sexe" class="form-control" id="sexe"> <option value="-1">Votre sexe</option> <option value="F">Femme</option> <option value="H">Homme</option> </select> </div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="mail">E-mail :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="email" placeholder="Votre adresse mail :" id="mail" name="mail"/></div> </div> <div class="col-md-6"> <label for="mail2">Répetez votre adresse mail :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="email" placeholder="Répetez votre mail" id="mail2" name="mail2"/></div> </div> </div> <br/> <div class="row"> <div class="col-md-6"> <label for="mdp">Mot de passe :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="password" placeholder="Mot de passe" id="mdp" name="mdp"/></div> </div> <div class="col-md-6"> <label for="mdp2">Répéter votre mot de passe :</label> <div class="input-group"> <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span> <input class="form-control" type="password" placeholder="Répéter mot de passe" id="mdp2" name="mdp2"/></div> </div> </div> <br/> <div class="row"> <div class="col-md-12"> <input class="btn btn-primary" type="submit" name="validation" value="Je m'inscris"/> <a class="btn btn-success" href="index.php">Se connecter</a> </div> </div> </form> </div> </div> </div> <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <!-- Include all compiled plugins (below), or include individual files as needed --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> </body> </html>
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
23 juin 2016 à 23:15
23 juin 2016 à 23:15
Bon la fonction NOW(); marche pas avec ce type d’utilisation....
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
24 juin 2016 à 10:35
24 juin 2016 à 10:35
Bonjour, j'ai du faire d'une autre façon.
Merci bonne journée.
Merci bonne journée.
flo39400
Messages postés
596
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
9 septembre 2021
21
29 juin 2016 à 20:56
29 juin 2016 à 20:56
Bonsoir pu de nouvelles :/
23 juin 2016 à 19:33
23 juin 2016 à 19:37
Qui devrais être :
23 juin 2016 à 20:30
Maintenant comment faire pour enregistré l'adresse IP de la personne qui s'inscrit et même qui navigue sur le site ? Que ça sois des inscrit ou même des visiteur.
Style dans une table IP avec un champs id, pseudo, datetime et IP.
Mais je sais pas comment faire cela.
Modifié par flo39400 le 23/06/2016 à 21:41
Puis en mettant NOW() directement comme cela :
Mais voila ça ne marche pas "Fatal error: Call to undefined function NOW() in C:\wamp64\www\final\test.php on line 48"