bonjour a tous
pour l'instant mon site fonctionne super bien et depuis un petit moment j'ai des utilisateurs qui s'enregistre avec des adresses email bidon
je souhaiterais donc pouvoir un email de confirmation a leur adresse email
Mais comment m' y prendre
Apparemment je devrais créer deux nouveaux champs un token_user et un pour la confirmation "confirmer "
voici mon code existant que j'ai commencer a modifier
ensuite je dois donc créer le fichier de validation que je vais envoyer
ensuite je dois mettre a jour le confirmer et c'est la ou je bloque
comment utiliser la requête update
pour l'instant mon site fonctionne super bien et depuis un petit moment j'ai des utilisateurs qui s'enregistre avec des adresses email bidon
je souhaiterais donc pouvoir un email de confirmation a leur adresse email
Mais comment m' y prendre
Apparemment je devrais créer deux nouveaux champs un token_user et un pour la confirmation "confirmer "
voici mon code existant que j'ai commencer a modifier
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
?>
<?php
// je me connecte a la base de donnee
require_once 'base.php';
//si tous est ok alors on passe a l inscription
if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
$password = ($_POST['password']);
$password_retype = ($_POST['password_retype']);
//preparation des variables propres
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
$email = !empty($_POST['email']) ? $_POST['email'] : NULL;
//préparation de la requête et des variables afin de vérifier si l email est présent dans la table
$sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
$datas = [$email];
//Execution de la requete
try
{
$requete = $bdd->prepare($sql);
$requete->execute($datas);
}
catch(Exception $e)
{
// en cas d'erreur :
echo " Erreur ! " . $e->getMessage();
echo " Les datas : ";
print_r($datas);
}
$data = $requete->fetch();
$row = $requete->rowCount();
if ($row == 0)
{
//préparation de la requête et des variables afin de verifier si le pseudo est present dans la table
$sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
$datas = [$pseudo];
//Execution de la requete
try
{
$requete = $bdd->prepare($sql);
$requete->execute($datas);
}
catch(Exception $e)
{
// en cas d'erreur :
echo " Erreur ! " . $e->getMessage();
echo " Les datas : ";
print_r($datas);
}
$data = $requete->fetch();
$row = $requete->rowCount();
//on verifie que le pseudo n est pas present
if ($row == 0)
{ //on verifie que le pseudo fais moins de 40 caractere
if (strlen($pseudo) <= 30)
{ //on verifie que le email fais moins de 40 caractere
if (strlen($email) <= 35)
{
if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo))//on verifie les caracteres
{
if (filter_var($email, FILTER_VALIDATE_EMAIL)) //on verifie que c est bien une email
{
if ($password == $password_retype)
{ //on verifie que le pasword retape correpond bien au passord
$cost = ['cost' => 12];
$password = password_hash($password, PASSWORD_BCRYPT, $cost);
$ip = $_SERVER['REMOTE_ADDR'];
$insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password, ip, token) VALUES(:pseudo, :email, [langue]assword, :ip, :token)');
$insert->execute(array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'token_user' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmer' => $confirmer);
//traitement de l envois par mail a l'utilisateur
setlocale (LC_TIME, 'fr_FR.utf8','fra');
date_default_timezone_set('Europe/Brussels');
$date1 = date('d-m-Y H:i:s'); // Date du jour
// on entre l'adresse email du membre
$to = '$email'; // notez la virgule
// Sujet
$subject= "Votre lien de confirmation ";
// message
$message =
'
<html>
<head>
<title>voici votre lien de confirmation </title>
</head>
<body>
<table>
<tr>
<td>le lien est </td><td><a href="https://phil.pecheperle.be/validation.php?'.id=$id&token_user=$token_user.'">Votre lien de confirmation</a></td></br>
</tr>
</table>
</body>
</html> ';
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'content-type: text/html; charset=utf-8';
// En-têtes additionnels
//$headers[] = "From: " . $name . "<". $_POST["email"] .">\r\n";
$headers[] = 'From: '.$email."\r\n".
'Reply-To: '.$name."\r\n" .
'X-Mailer: PHP/' . phpversion();
// Envoi
//var_dump($headers);
if(mail($to, $subject, $message, implode("\r\n", $headers))){
// success message
//echo "Success!<br />";
}else{
// error message
//echo "Fail<br />";
header('Location:redirection-inscription.php?reg_err=success');
die();
}
else
{
header('Location: inscription.php?reg_err=password');
die();
}
}
else
{
header('Location: inscription.php?reg_err=email');
die();
}
}
else
{
header('Location: inscription.php?reg_err=pseudo_caractere');
die();
}
}
else
{
header('Location: inscription.php?reg_err=email_length');
die();
}
}
else
{
header('Location: inscription.php?reg_err=pseudo_length');
die();
}
}
else
{
header('Location: inscription.php?reg_err=already');
die();
}
}
else
{
header('Location: inscription.php?reg_err=already');
die();
}
}
ensuite je dois donc créer le fichier de validation que je vais envoyer
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
require 'includes/db.php';
//on cree une variable pour la comparer
$tokenUser= !empty($_POST['tokenUser']) ? $_POST['tokenUser'] : NULL;
$id= !empty($_POST['id']) ? $_POST['id'] : NULL;
$req = $bdd->prepare('SELECT id, token_user ,confirmer FROM membre WHERE id = ?*:id');
if($req->execute(array(':id' => $id)) && $resultat = $req->fetch()){
$tokenUser = $resultat['token_user'];
$activation = $resultat['confirmer'];
if($activation != NULL) {
echo("votre compte est déjà activé");
} else {
if($tokenUser == $token_user) {
echo("Votre compte est activé");
} else {
echo("Cette clé ne correspond pas");
}
}
}
?>
ensuite je dois mettre a jour le confirmer et c'est la ou je bloque
comment utiliser la requête update