Inscription : le insert into ne fait rien
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je suis en train de créer mon site internet mais j'ai un soucis quand je veux inscrire un membre dans la base de donnée :
voici le code :
Il n'y pas de message d'erreur et je ne trouve pas l'erreur ...
Si quelqu’un pourrait m'aider, sa me serait vraiment utile
Merci d'avance
Nils0
voici le code :
<?php $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', ''); if(isset($_POST['forminscription'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $mail = htmlspecialchars($_POST['mail']); $mail2 = htmlspecialchars($_POST['mail2']); $mdp = sha1($_POST['mdp']); $mdp2 = sha1($_POST['mdp2']); if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) { $pseudolength = strlen($pseudo); if($pseudolength <= 255) { if($mail == $mail2) { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?"); $reqmail->execute(array($mail)); $mailexist = $reqmail->rowCount(); if($mailexist == 0) { if($mdp == $mdp2) { $insertmbr = $bdd->prepare("INSERT INTO membres (pseudo, mail, motdepasse) VALUES(?, ?, ?)"); $insertmbr->execute(array($pseudo, $mail, $mdp)); $erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>"; } else { $erreur = "Vos mots de passes ne correspondent pas !"; } } else { $erreur = "Adresse mail déjà utilisée !"; } } else { $erreur = "Votre adresse mail n'est pas valide !"; } } else { $erreur = "Vos adresses mail ne correspondent pas !"; } } else { $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="style.css" /> <link rel="icon" type="image/x-icon" href="images/logo.jpg" /> <title> Le titre </title> </head> <body> <?php include("header.php"); ?> <!-- Titre avec le menu --> <div class="page"> <h2>Inscrivez-vous dès maintenant</h2> <br /><br /> <form method="POST" action=""> <table> <tr> <td align="right"> <label for="pseudo">Pseudo :</label> </td> <td> <input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" /> </td> </tr> <tr> <td align="right"> <label for="mail">Mail :</label> </td> <td> <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" /> </td> </tr> <tr> <td align="right"> <label for="mail2">Confirmation du mail :</label> </td> <td> <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" /> </td> </tr> <tr> <td align="right"> <label for="mdp">Mot de passe :</label> </td> <td> <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" /> </td> </tr> <tr> <td align="right"> <label for="mdp2">Confirmation du mot de passe :</label> </td> <td> <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" /> </td> </tr> <tr> <td></td> <td align="center"> <br /> <input type="submit" name="forminscription" value="Je m'inscris" /> </td> </tr> </table> </form> <?php if(isset($erreur)) { echo $erreur; } ?> </div> </body> </html>
Il n'y pas de message d'erreur et je ne trouve pas l'erreur ...
Si quelqu’un pourrait m'aider, sa me serait vraiment utile
Merci d'avance
Nils0
A voir également:
- Inscription : le insert into ne fait rien
- Wetransfer gratuit sans inscription - Guide
- Twitter inscription - Guide
- Vinted inscription - Guide
- Paypal inscription - Guide
- Instagram inscription - Guide
le
me renvoie "votre compte a bien été créer" alors qu'il n'y a rien dans la base de donnée ...
Cette fonction est faite pour l’échappement des caractères html avant l'affichage. Pas avant l'envoie dans une base de donnée.
Pour sécurisé les variables utilisateurs avant l'envoie dans une base de donnée tu dois utiliser la fonction prepare de pdo.
Essaye comme ça :
PDO::PARAM_STR permet d'indiquer qu'il s'agit d'une chaine de caractère.
Tu peux aussi utiliser PDO::PARAM_INT pour un nombre.
Je te conseille égallement de définir ton fichier de connexion comme ça :
Affin d'afficher les éventuelles erreurs SQL
Cordialement
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);