Bonjour chers amis,
à nouveau de retour pour un autre problème. Voilà j'ai un script d'enregistrement qui fonctionne parfaitement mais pour faire plus professionnel j'ai décidé d'y apporter une petite modification afin qu'un mail de validation soit transmis au nouvel inscrit mais c'est à partir de là que tout ce gâte. Plus d'insertion dans la base de données et aucun mail n'est transmis.
Mon code d'enregistrement tout simple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
 
<?php
 
 
//connexion à la base de donnée
.........
//
 
 
//On vérifie que l'utilisateur a bien envoyé les informations demandées 
if(isset($_POST["civilite"]) && isset($_POST["nom"]) && isset($_POST["prenom"]) && isset($_POST["email"]) && isset($_POST["password"]) && isset($_POST["password2"]) && isset($_POST["phone"]) && isset($_POST["adresse"]) && isset($_POST["register_date"])){
    //On vérifie que password et password2 sont identiques
    if($_POST["password"] == $_POST["password2"]){
        //On utilise alors notre fonction password_hash :
        $hash = password_hash($_POST["password"], PASSWORD_DEFAULT);
        //Puis on stock le résultat dans la base de données :
        $query = $bdd->prepare('INSERT INTO membres (civilite, nom, prenom, email, password, phone, adresse, register_date) VALUES(:civilite, :nom, :prenom, :email, :password, :phone, :adresse, :register_date);');
        $query->bindParam(':civilite', $_POST["civilite"]);
        $query->bindParam(':nom', $_POST["nom"]);
        $query->bindParam(':prenom', $_POST["prenom"]);
        $query->bindParam(':email', $_POST["email"]);
        $query->bindParam(':password', $hash);
        $query->bindParam(':phone', $_POST["phone"]);
        $query->bindParam(':adresse', $_POST["adresse"]);
        $query->bindParam(':register_date', $_POST["register_date"]);
        $query->execute();
        header('Location: thank_you.html');
        exit();
    }
}
 
 
?>

Ensuite le script d'envoi de mail de validation que j'ai ajouté, au passage un grand merci à MathieuGut car ce script est de lui dans son tuto Création d'un mail de confirmation en PHP.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
 
<?php
//...
// Votre code
//...
// Connexion à la base de données
//...
// Vérification des données saisies par l'utilisateur
//...
// Enregistrement des données dans la base
//...
// Récupération des variables nécessaires au mail de confirmation
$email = $_POST['email'];
$login = $_POST['login'];
// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);
// Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
$stmt = $dbh->prepare("UPDATE membres SET cle=:cle WHERE login like :login");
$stmt->bindParam(':cle', $cle);
$stmt->bindParam(':login', $login);
$stmt->execute();
// Préparation du mail contenant le lien d'activation
$destinataire = $email;
$sujet = "Activer votre compte" ;
$entete = "From: inscription@votresite.com" ;
// Le lien d'activation est composé du login(log) et de la clé(cle)
$message = 'Bienvenue sur VotreSite,
Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.
http://votresite.com/activation.php?log='.urlencode($login).'&cle='.urlencode($cle).'
---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
//...
// Fermeture de la connexion
//...
// Votre code
//...

Et voici les deux combinés, la page d'enregistrement entière:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
 
 
 
<?php
 
 
//J'ouvre ma base de donnée
    $dbname= 'moaye_16bdd';
    $user = 'root';
    $password = '';
    $host = 'localhost';
 
try {
    $bdd = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $password );
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $bdd->exec("SET CHARACTER SET utf8");
} catch (PDOException $e) {
    echo "<p>Erreur : " . $e->getMessage() . "</p>";
    exit();
}
 
 
//On vérifie que l'utilisateur a bien envoyé les informations demandées 
if(isset($_POST["civilite"]) && isset($_POST["nom"]) && isset($_POST["prenom"]) && isset($_POST["email"]) && isset($_POST["password"]) && isset($_POST["password2"]) && isset($_POST["phone"]) && isset($_POST["adresse"]) && isset($_POST["register_date"])){
    //On vérifie que password et password2 sont identiques
    if($_POST["password"] == $_POST["password2"]){
        //On utilise alors notre fonction password_hash :
        $hash = password_hash($_POST["password"], PASSWORD_DEFAULT);
        //Puis on stock le résultat dans la base de données :
        $query = $bdd->prepare('INSERT INTO membres (civilite, nom, prenom, email, password, phone, adresse, register_date) VALUES(:civilite, :nom, :prenom, :email, :password, :phone, :adresse, :register_date);');
        $query->bindParam(':civilite', $_POST["civilite"]);
        $query->bindParam(':nom', $_POST["nom"]);
        $query->bindParam(':prenom', $_POST["prenom"]);
        $query->bindParam(':email', $_POST["email"]);
        $query->bindParam(':password', $hash);
        $query->bindParam(':phone', $_POST["phone"]);
        $query->bindParam(':adresse', $_POST["adresse"]);
        $query->bindParam(':register_date', $_POST["register_date"]);
        $query->execute();
 
 
 // Récupération des variables nécessaires au mail de confirmation   
$email = $_POST['email'];
$nom = $_POST['nom'];
 
// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);
 
 
// Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
$query = $bdd->prepare("UPDATE membres SET cle=:cle WHERE email like :email");
$query->bindParam(':cle', $cle);
$query->bindParam(':nom', $nom);
$query->execute();
 
 
// Préparation du mail contenant le lien d'activation
$destinataire = $nom;
$sujet = "Confimer votre enregistrement" ;
$entete = "From: inscription@votresite.com" ;
 
// Le lien d'activation est composé de l email(email) et de la clé(cle)
$message = 'Bienvenue sur MonSite,
 
Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.
 
http://votresite.com/activation.php?log='.urlencode($nom).'&cle='.urlencode($cle).'
 
 
---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
 
 
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
 
     header('Location: thank_you.html');
 
            exit();
    }
}
?>
 
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Mon titre</title>
<link href='http://fonts.googleapis.com/css?family=Bitter' rel='stylesheet' type='text/css'>
<link href='layer.css' rel='stylesheet' type='text/css'>
 
 
</head>
 
<body>
 
<div class="form-style-10">
<h1>Inscrivez-vous<span>Et poursuivez le renseignement de votre dossier médical!</span></h1>
<form method="post" action="register.php" enctype="">
    <div class="section"><span>1</span>Identité</div>
    <div class="inner-wrap">
 
    	<label>Civilité<select name="civilite" class="select-field" required/>
        <option value="nc"></option>
        <option value="M.">M.</option>
        <option value="Mme.">Mme.</option>
        <option value="Mlle.">Mlle.</option>
        </select></label>
        <label>Nom <input type="text" name="nom" required style="text-transform: uppercase;" /></label>
        <label>Prenom(s) <input type="text" name="prenom" required style="text-transform: uppercase;"/></label>
 
 
    </div>
 
    <div class="section"><span>2</span>Email &amp; Password</div>
    <div class="inner-wrap">
        <label>Addresse Email  <input type="email" name="email" required/></label>
        <label>Mot de passe <input type="password" name="password" required id="password" class="password"/></label>
        <label>Confirmer Mot de passe <input type="password" name="password2" required id="password2" class="password"/></label>
 
 
    </div>
 
    <div class="section"><span>3</span>Vos contacts</div>
        <div class="inner-wrap">
        <label>Téléphone  <input type="text" name="phone" required placeholder="00-00-00-00 / 00-00-00-00" /></label>
        <label>Adresse Postale <input type="text" name="adresse" required style="text-transform: uppercase;"/></label>
        <input type="hidden" name="register_date" value="<?php echo date('Y-m-d', strtotime(date('Y-m-d')));?>" />
    </div>
    <div class="button-section">
     <input type="submit" name="Sign Up" />
 
    </div>
</form>
</div>
 
</body>
</html>
J'espère avoir été assez précis dans ma requête, au plaisir de vous lire très prochainement avec des solutions ou des conseils. Pour ma part je continue à chercher de mon côté. Milles merci

Au fait j'ai failli oublier une chose importante, l'erreur que j'obtiens à la soumission du formulaire:

Nom : error.PNG
Affichages : 178
Taille : 35,1 Ko