Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
Bonjour,
Je viens de faire le fichier inscription + sa modification pour rajouter le token. Apparemment je n'ai pas d'erreur, mais le soucis je ne recois pas de mail.
Pour tester si mampserver envoyait bien les mails j'ai fait un test d'envois de mail, comme ci-dessous, et tout fonctionne bien, je reçois le mail. Mais avec la création du token je n'ai rien du tout. Quand je fais une inscription c'est bon j'ai même le token qui ce fait dans la bdd.
Je me suis demandé pourquoi avez-vous écris ceci dans votre article "N'oubliez pas d'enregistrer votre clé dans votre base de données."
Que falait-il faire je n'ai pas compris.
Merci
inscription.php
$token = bin2hex(random_bytes(12));
$req = $DB->query("SELECT * FROM utilisateur WHERE mail = ?",
array($mail));
$req = $req->fetch();
$mail_to = $req['mail'];
//=====Création du header de l'e-mail.
$header = "From: no-reply@gmail.com\n";
$header .= "MIME-version: 1.0\n";
$header .= "Content-type: text/html; charset=utf-8\n";
$header .= "Content-Transfer-ncoding: 8bit";
//=======
//=====Ajout du message au format HTML
$contenu = '<p>Bonjour ' . $req['nom'] . ',</p><br>
<p>Veuillez confirmer votre compte <a href="http://www.domaine.com/conf.php?id=' . $req['id'] . '&token=' . $token . '">Valider</a><p>';
mail($mail_to, 'Confirmation de votre compte', $contenu, $header);
sendmail.php
<?php
$dest = "ADRESSE-MAIL@gmail.com";
$sujet = "Email de test";
$corp = "Salut ceci est un email de test envoyer par un script PHP";
$headers = "From: ADRESSE-MAIL@gmail.com";
if (mail($dest, $sujet, $corp, $headers)) {
echo "Email envoyé avec succès à $dest ...";
} else {
echo "Échec de l'envoi de l'email...";
}
?>
Salut @Meegolo,
Alors pour essayer de t'aider;
Que signifie ça :
if($id < 1){
Je pense qu'il n'est pas judicieux de faire cela...
L'$id
est propre à chaque utilisateurs.
Je ferai à ta place dans ta base de donnée un argument confirm
, qui aura par valeur 0
.
Si confirm == 1
alors c'est que ton utilisateur à déjà vérifié son compte.
En ce qu'il en est pour le $valid
:
Aucun avertissement n'est généré si la variable n'existe pas. Cela signifie que empty ()
est essentiellement l'équivalent concis de !Isset ($valid) || $valid == false
.
Je vois que tu commences la programmation WEB, essaie de reprendre ta base de donnée tout d'abord, et revoie ton code tranquillement. Si tu ne comprends toujours pas ce qu'il ne va pas, tu pourras nous solliciter.
Bon courage,
Florent 😀
Bonsoir,
J'ai trouvé mon souci. Maintenant je reçois bien mes emails mais je rencontre un autre problème et même avec les fichiers téléchargé j'ai une erreur :
Notice: Undefined variable: valid in le fichier conf.php
Parse
error
: syntax
error
, unexpected
'if'
(T_IF) Dans fichier original conf.php la ligne est if(
$id
<
1
){
session_start();
include('bd/connexionDB.php');
if (isset($_SESSION['id'])){
header('Location: index.php');
exit;
}
$id = (int) $_GET['id'];
$token = (String) htmlentities($_GET['token']);
if($id < 1){
$valid = false;
$err_mess = "Le lien est erroné";
}elseif(!isset($token)){
$valid = false;
$err_mess = "Le lien est erroné";
}
Dans mon fichier conf.php j'ai cette erreur à la ligne 23
Notice
: Undefined
variable
: valid in
la ligne 23 est le premier if
if($valid){
$req = $DB->query("SELECT id FROM utilisateur WHERE id = ? AND token = ?",
array($id, $token));
$req = $req->fetch();
Je ne sais pas où et comment la définir
Merci pour votre aide