Salut tout le monde,je crée ce topic afin de vous faire parvenir mon problème:aroundje suis actuellment cette vidéo:
Et j'aimerais vous demander comment remédier à ce problème ?
Voici Le Code De "register.php" :
Voci Maintenant le code confirm.php
Et le code de functions.php
Si vous savez comment remédier à ça,
SVP dites le moi (Je suis novice donc si vous pouviez me dire quel est l'éventuel code que je dois mettre et à quel endroit ?
Merci
Vous devez être inscrit pour voir les liens ! Inscrivez-vous ou connectez-vous ici.
, et mon problème est que Quand je m'inscrit sur ma page register.php tout ce passe bien(utilisateur et token créés dans la bdd) mais je ne voit pas mon token quand je clique sur le bouton "je m'inscrit" et on ne m'envoit rien sur mon adrresse GMAIL.Et j'aimerais vous demander comment remédier à ce problème ?
Voici Le Code De "register.php" :
PHP:
<?php require_once 'inc/functions.php';
if(!empty($_POST)){
$errors = array();
require_once'inc/db.php';
if(empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_-]+$/',$_POST['username'])) {
$errors['username'] = "Vôtre pseudo n'est pas valide";
} else{
$req = $pdo->prepare('SELECT id FROM users WHERE username = ?');
$req->execute([$_POST['username']]);
$user = $req->fetch();
if($user){
$errors['username'] = "Ce pseudo est déjà utilisé !";
}
}
if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = "Votre Email n'est pas valide !";
}else{
$req = $pdo->prepare('SELECT id FROM users WHERE email = ?');
$req->execute([$_POST['email']]);
$user = $req->fetch();
if($user){
$errors['email'] = "Cet email est déjà utilisé !";
}
}
if(empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm'])
{
$errors['password'] = "Vous devez entrer un mot de passe valide";
}
if(empty($errors)){
// On enregistre les informations dans la base de données
$req = $pdo->prepare("INSERT INTO users SET username = ?, password = ?, email = ?, confirmation_token = ?");
// On ne sauvegardera pas le mot de passe en clair dans la base mais plutôt un hash
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
// On génère le token qui servira à la validation du compte
$token = str_random(60);
$req->execute([$_POST['username'], $password, $_POST['email'], $token]);
$user_id = $pdo->lastInsertId();
// On envoit l'email de confirmation
mail($_POST['email'], 'Confirmation de votre compte', "Afin de valider votre compte merci de cliquer sur ce lien\n\nhttp://127.0.0.1/Site/EspaceMembre/confirm.php?id=$user_id&token=$token");
// On redirige l'utilisateur vers la page de login avec un message flash
$_SESSION['flash']['success'] = 'Un email de confirmation vous a été envoyé pour valider votre compte';
header('Location: login.php');
exit();
}
}
?>
<html>
<?php
require 'inc/header.php';
?>
<meta charset="utf-8">
<h1>S'Inscrire</h1>
<br/>
<?php if(!empty($errors)):?>
<div class="alert alert-danger">
<p> Vous N'avez pas Rempli le forumulaire correctement </p>
<ul>
<?php foreach($errors as $error): ?>
<li> <?= $error; ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<form action="" method="POST">
<div class="form-group">
<label for="">Pseudo</label>
<input type="text" name="username" id="username" class="form-control" />
</div>
<div class="form-group">
<label for="">Email</label>
<input type="text" name="email" id="email" class="form-control"/>
</div>
<div class="form-group">
<label for="">Mot de passe</label>
<input type="password" name="password" id="password" class="form-control"/>
</div>
<div class="form-group">
<label for="">Confirmez Vôtre Mot de passe</label>
<input type="password" name="password_confirm" class="form-control"/>
</div>
<button type="submit" class="btn btn-primary">S'Inscrire</button>
<?php require 'inc/footer.php';
?>
Voci Maintenant le code confirm.php
PHP:
<?php
require 'inc/header.php';
$user_id = $_GET['id'];
$token = $_GET['token'];
require 'inc/db.php';
$req = $pdo->prepare('SELECT token FROM users WHERE id = ?');
$req->execute([$user_id]);
$user = $req->fetch();
session_start();
if($user && $user->token == $token ){
$pdo->prepare('UPDATE users SET token = NULL, confirmed_at = NOW() WHERE id = ?')->execute([$user_id]);
$_SESSION['flash']['success'] = 'Votre compte a bien été validé';
$_SESSION['auth'] = $user;
die('Ok');
}else{
$_SESSION['flash']['danger'] = "Ce token n'est plus valide";
die('Non');
}
PHP:
<?php
require 'inc/header.php';
$user_id = $_GET['id'];
$token = $_GET['token'];
require 'inc/db.php';
$req = $pdo->prepare('SELECT token FROM users WHERE id = ?');
$req->execute([$user_id]);
$user = $req->fetch();
session_start();
if($user && $user->token == $token ){
$pdo->prepare('UPDATE users SET token = NULL, confirmed_at = NOW() WHERE id = ?')->execute([$user_id]);
$_SESSION['flash']['success'] = 'Votre compte a bien été validé';
$_SESSION['auth'] = $user;
die('Ok');
}else{
$_SESSION['flash']['danger'] = "Ce token n'est plus valide";
die('Non');
}
Si vous savez comment remédier à ça,
SVP dites le moi (Je suis novice donc si vous pouviez me dire quel est l'éventuel code que je dois mettre et à quel endroit ?
Merci