Résolu Pourquoi je ne recoit aucun token ?

Statut
N'est pas ouverte pour d'autres réponses.

Neziics'

Membre
Inscription
28 Mai 2014
Messages
1 513
Réactions
347
Points
1 466
RGCoins
25
Salut tout le monde,je crée ce topic afin de vous faire parvenir mon problème:aroundje suis actuellment cette vidéo: , 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');
}
Et le code de functions.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');
}

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
 
Ton mail ma l'air bizar tien une video qui je pense pourrais t'aider voir même résoudre ton probleme elle dure que 17minutes par apport a Grafikart qui dure des heures x)
 
Ton mail ma l'air bizar tien une video qui je pense pourrais t'aider voir même résoudre ton probleme elle dure que 17minutes par apport a Grafikart qui dure des heures x)
au début je suivait son tuto,mais j'avait des pb d'accolades(c'est quoi son editeur à lui ?))
 
tien c'est cadeau

PHP:
<?php
$user_id = 'test';
$token = 1513131415441;
$mail = '[email protected]';


     $to      = $mail;
     $subject = 'Le sujet osef';
     $message = 'Bonjour ! voici votre code de confirmation https://floriandubois.fr/cofirm.php?user_id='.$user_id.'&token='.$token.'';
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

     mail($to, $subject, $message, $headers);
 ?>
 
tien c'est cadeau

PHP:
<?php
$user_id = 'test';
$token = 1513131415441;
$mail = '[email protected]';


     $to      = $mail;
     $subject = 'Le sujet osef';
     $message = 'Bonjour ! voici votre code de confirmation https://floriandubois.fr/cofirm.php?user_id='.$user_id.'&token='.$token.'';
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

     mail($to, $subject, $message, $headers);
?>
J'ai rien compris X)
 
J'ai rien compris X)
:o c'est un systeme de mail basique,

PHP:
<?php


     $to      = $_POST['email'];
     $subject = 'Le sujet osef';
     $message = 'Bonjour ! voici votre code de confirmation https://floriandubois.fr/cofirm.php?user_id='.$user_id.'&token='.$token.'';
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

     mail($to, $subject, $message, $headers);
?>

Remplace par tes infos normalement sa devrait fonctionner la
 
:O c'est un systeme de mail basique,

PHP:
<?php


     $to      = $_POST['email'];
     $subject = 'Le sujet osef';
     $message = 'Bonjour ! voici votre code de confirmation https://floriandubois.fr/cofirm.php?user_id='.$user_id.'&token='.$token.'';
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

     mail($to, $subject, $message, $headers);
?>

Remplace par tes infos normalement sa devrait fonctionner la
Je met ton code à quel endroit ?
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut