Problème d'INSERT à l'inscription et de mail qui ne s'envoie pas

Suivre ce topic
Ce topic est suivi par : Personne...
Ce topic a été résolu
Malib

Malib Le 18 avril 2016 à 14:12 (Édité le 25 janvier 2019 à 17:50)

Voilà alors comme j'ai bien écrire sur se forum je vous propose un de mes nouveaux problème! lol


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

TheFlameflo Le 18 avril 2016 à 14:37

Re-salut !

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

Malib Le 18 avril 2016 à 14:45

 Merci,  je vois je vais essayer sa! moi je mettais la valeur à la place des '?' . je te dis sa dès que j'ai effectué les tests!  

Et sinon nop je suis chez Hostinger
Malib

Malib Le 18 avril 2016 à 15:09

Pour l'INSERT c'est parfait, donc enfaite je positionnais mal les valeurs! je les mettais pas au bont endroit merci bien. Probleme 1 reglé!^^
TheFlameflo

TheFlameflo Le 18 avril 2016 à 15:53

Super ! 😀
Malib

Malib Le 18 avril 2016 à 15:54

Si tu as une idée pour le mail je suis preneur 😉
Florian

Florian Le 18 avril 2016 à 16:24

Le code pour l'envoie du mail ? tu l'as bien mis dans la bonne boucle ? l'email est la bonne ?
Malib

Malib Le 18 avril 2016 à 16:43

je poste ici le code, j'ai suivi le tuto: Sur localhost je recevais bien que le mail etait bloqué mais qu'il partait au moins ^^

{
$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

Florian Le 18 avril 2016 à 19:13 (Édité le 18 avril 2016 à 19:35)

Chez moi ça fonctionne avec ce code
$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

Malib Le 18 avril 2016 à 22:51

ok je vais testé!
Malib

Malib Le 18 avril 2016 à 22:57

Alors sa fonctionne je reçois le mail dans les spam mais sa c'est rien par contre même si je valide pas je peux quand même me connecter. Je ne sais plus si dans le tuto c'est fait ou si il faut le faire je vais jeter un oeil.

merci en tout cas!
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte