Confirmation par email

Résolu
Bonjour, j'ai un GROOOOOOOOOOS problème et là pour le coup je dois être "maudit" ^^, en faite quand je met le code + la structure (donc confirmkey et confirme qui font référence a la confirmation de la personne), et que la personne s'inscrit, le mail s'envoie MAIS le compte ne se créé pas. Je vous montre mon code :
if ($mdp == $mdp2) {

$longueurKey = 15;
$key = "";
for ($i=1; $i<$longueurKey; $i++) {
$key .= mt_rand(0,9);
}

$insertmbr = $bdd->prepare("INSERT INTO membres (pseudo, email, mdp, confirmkey) VALUES (?, ?, ?, ?)");
$insertmbr->execute(array($pseudo, $email, $mdp, $key));
header("Location: connexion.php");

$header="MIME-Version: 1.0\r\n";
$header.='From:"Nom.fr"<****@gmail.com>'."\n";
$header.='Content-Type:text/html; charset="uft-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';

$message='
<html>
<body>
<div align="center">
<a href="http://localhost/physique/confirmation.php?pseudo='.urlencode($pseudo).'$key='.$key.'" rel="nofollow" target="_blank" </div>
</body>
</html>
';

mail($email, "Confirmation de compte", $message, $header);
}


Voilà merci d'avance !

1 réponse

  1. Salut,

    Si le problème concerne l'inscription en bdd, commence par activer l'affichage des erreurs PDO si ce n'est pas fait : https://www.php.net/manual/fr/pdo.error-handling.php

    Du coup, as tu une erreur sql ?

    Bonne journée,
    1. ah nan mais j'ai aucune erreur, en faite ça me redirige bien vers la page connexion mais rien ne se met dans la BDD.
    2. ah oui désolé, et merci.
      Ducoup ça me met ça : DOException: SQLSTATE[HY000]: General error: 1364 Field 'confirme' doesn't have a default value
      et : Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'confirme' doesn't have a default value
    3. Modérateur
      @ChifFlamTu as donc dans ta Table un champ 'confirme' qui par défaut n'a pas de valeur par défaut... et comme tu ne le mets pas dans ta requête...il ne sait pas quoi y mettre d'où l'erreur.
      Donc le mieux serait d'éditer ta table et de définir une valeur par défaut à ce champ (vide par exemple ou 0 si c'est un numérique....)
    4. oui et bien justement, le champ est de type INT avec une valeur de 1