Problème d'INSERT à l'inscription et de mail qui ne s'envoie pas
- Accueil
- Forum
- Programmation
- PHP
- Problème d'INSERT à l'inscription et de mail qui ne s'envoie pas
Malib Le 18 avril 2016 à 14:12 (Édité le 25 janvier 2019 à 17:50)
J'ai donc suivi le tuto de l'espace membre, tout fonctionne. (Déjà la c'est bien 😋)
Ensuite j'ai donc voulu rajouter la validation de mail. Je ne reçois aucun mail, la clef s'écrit bien dans la BDD car j'ai un code de 12 chiffres. Je pense que c'est plus l'envoie du mail qui ne fonctionne pas. En tout cas je peux quand même me connecter.
2em:
Donc sur cette fameuse ligne (dernière de l'inscription qui valide donc si l'inscription est bonne) on à le INSERT INTO. J'ai voulu ajouter 2 champs (point qui aura la valeur de zéro et planète qui est un champ à remplir sur le formulaire.)
Quand je valide l'inscription il y à une erreur que voici:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters' in /home/u218634216/public_html/modele/inscription.php:56 Stack trace: #0 /home/u218634216/public_html/modele/inscription.php(56): PDOStatement->execute(Array) #1 /home/u218634216/public_html/vue/page_inscription.php(94): include('/home/u21863421...') #2 {main} thrown in/home/u218634216/public_html/modele/inscription.php on line 56
J'ai donc retiré mon code, je pense que je ne faisais pas correctement l'entrée dans la BDD.
Voici mon code:
insertmembre = $bdd->prepare("INSERT INTO membre (pseudo,mail,mdp, confirmekey,point,planete) VALUES (?, ?, ?, ?,0,?)");/* Enregistre une entrée dans la BDD */
$insertmembre->execute(array($pseudo, $mail, $mdp, $key, $point, $planete));
Voilà mon petit problème ^^ TheFlameflo Le 18 avril 2016 à 14:37 (Édité le 1 janvier 1970 à 01:00)
Pour ton premier problème, si tu es en local, c'est fake sendmail qui ne marche pas, du coup, tu peux en essayer d'autres comme maildev, si tu veux.
Pour ton deuxième problème, c'est dans tes valeurs que ça ne marche pas.
En effet, tu as deux choix : soit tu n'insères pas les points sur la page mais que tu mettes le champ point avec 0 comme valeur par défaut dans ta table ou tu mets un '?' dans les values et tu définis le nombre de points dans l'array en dessous.
Mais si tu veux, j'ai adapté ton code pour qu'il marche sans que tu aies à modifier trop de choses.
$insertmembre = $bdd->prepare("INSERT INTO membre (pseudo,mail,mdp, confirmekey,point,planete) VALUES (?, ?, ?, ?,?,?)");/* Enregistre une entrée dans la BDD */
$insertmembre->execute(array($pseudo, $mail, $mdp, $key, 0, $planete));
Bref, il y a d'autres techniques aussi, mais la première et la deuxième devraient marcher !
Bonne chance pour le reste !
Malib Le 18 avril 2016 à 14:45 (Édité le 1 janvier 1970 à 01:00)
Et sinon nop je suis chez Hostinger
Malib Le 18 avril 2016 à 15:09 (Édité le 1 janvier 1970 à 01:00)
Malib Le 18 avril 2016 à 15:54 (Édité le 1 janvier 1970 à 01:00)
Florian Le 18 avril 2016 à 16:24 (Édité le 1 janvier 1970 à 01:00)
Malib Le 18 avril 2016 à 16:43 (Édité le 1 janvier 1970 à 01:00)
{
$insertmembre = $bdd->prepare("INSERT INTO membre (pseudo,mail,mdp,confirmekey,point,planete) VALUES (?, ?, ?, ?,?,?)");/* Enregistre une entrée dans la BDD */
$insertmembre->execute(array($pseudo, $mail, $mdp, $key, 0, $planete));
$header="MIME-Version: 1.0\r\n";
$header.='From:"Email de confirmation"<eaglexiii@hotmail.fr>'."\n";
$header.='Content-Type:text/html; charset="uft-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';
$message='
<html>
<body>
<div align="center">
<a href="http://http://apprendre.esy.es/modele/confirmation_mail.php?pseudo=' .urlencode($pseudo).'&key='.$key.'">Confirmer votre compte</a>
</div>
</body>
</html>
';
mail($mail, "Message bloqué par Gmail mais fonctionnel", $message, $header);
$correct = "Votre compte a bien eté crée.";
}
Florian Le 18 avril 2016 à 19:13 (Édité le 18 avril 2016 à 19:35)
$mail = 'TonEmail';
$pseudo = "test";
$key = "test";
$titre = "Message bloqué par Gmail mais fonctionnel";
$header="From: Confirmation du compte de $pseudo <connexion@apprendre.esy.es>\nMime-Version:";
$header.="1.0\nContent-Type: text/html; charset=uft-8\n";
$message="
<html>
<body>
<div align='center'>
<a href='http://http://apprendre.esy.es/modele/confirmation_mail.php?pseudo=" .urlencode($pseudo)."&key=".$key."'>Confirmer votre compte</a>
</div>
</body>
</html>
";
mail($mail, $titre, $message, $header);
Voila chez moi ça fonctionne en tout cas 😉 tu as juste a modifier quelque truck, je suis sous Gmail je reçoit mais en spam :x Malib Le 18 avril 2016 à 22:57 (Édité le 1 janvier 1970 à 01:00)
merci en tout cas!