Problème avec une variable de session

Résolu
Bonjour a tous

je souhaiterais pouvoir crée une variable se session ID lors de l'inscription de l'utilisateur
Mais lorsque je la crée et que je l'insère dans le traitement de mon inscription

Mon utilisateur qui s'inscrit et directement connecter a mon site après l'inscription

J'ai beau chercher je ne vois pas comment cela est possible

je vous donne mon code

<?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 verifier si l email est present 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];
                            
                            //on cree la confirmkey
                            $longueurkey =12;
							$key="";
							for($i=1;$i<$longueurkey;$i++)
								$key .=mt_rand(0,9);
							//$confirmkey =$key;
							
							//on mets a 0 la colonne confirme
							$confirme=0;
                            
                            
                            
                            
                            
                            $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                            $ip = $_SERVER['REMOTE_ADDR'];
                           $insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password, ip, token ,confirmkey,confirme) VALUES(:pseudo, :email, :password, :ip, :token ,:confirmkey,:confirme)');
                            $insert->execute(array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmkey' => $key ,'confirme' => $confirme));
							
							
							
							 //on definit et on cree les variables sessions
            $_SESSION['user'] = array(
                'id' => $data['id'],
                
            );
            $_SESSION['idinscription'] = $data['id'];
           
							
							
							
							
							
							//traitement de l envois par mail 
							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 un  destinataires
							$to  = $email; // notez la virgule
							// Sujet
							$subject= "votre confirmation";
							// message
							$message = 
							'
							<html>
								<head>
									<title>Votre confirmation  </title>
								</head>
								<body>
									<table>
										<tr>
											<td>ton pseudo est   </td><td>'.$pseudo .'

											
						
						<a href="https://phil.pecheperle.be/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a>
											
											</td></br>
										</tr>
										<tr>
											<td>l adresse mail    </td><td>'.$email .'</td></br>
										</tr>
										<tr>
											<td>date</td><td>'.$date1 .'</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 />";
							}
                            
                            
			// on entre un ou Plusieurs destinataires
							$to1  = 'perroquet666@hotmail.com'; // notez la virgule
							// Sujet
							$subject1= "UN NOUVEL INSCRIT ";
							// message
							$message1 = 
							'
							<html>
								<head>
									<title>un nouveau membre vient de s inscrire </title>
								</head>
								<body>
									<table>
										<tr>
											<td>son pseudo est   </td><td>'.$pseudo .'</td></br>
										</tr>
										<tr>
											<td>l adresse mail    </td><td>'.$email .'</td></br>
										</tr>
										<tr>
											<td>date</td><td>'.$date1 .'</td></br>
										</tr>
									</table>
								</body>
							</html>	';
							// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
							$headers1[] = 'MIME-Version: 1.0';
							$headers1[] = 'content-type: text/html; charset=utf-8';
							// En-têtes additionnels
							//$headers1[] =  "From: " . $name . "<". $_POST["email"] .">\r\n";
							$headers1[] = 'From: '.$email."\r\n".
							'Reply-To: '.$name."\r\n" .
							'X-Mailer: PHP/' . phpversion();
							// Envoi
							//var_dump($headers);
							if(mail($to1, $subject1, $message1, implode("\r\n", $headers1))){
							// 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();
    }
}

17 réponses

Résumé de la discussion

L'objectif évoqué est de créer une variable de session (session ID) lors de l'inscription afin que l'utilisateur soit automatiquement connecté après l'enregistrement, sans passer par une connexion manuelle ultérieure. Plusieurs réponses suggèrent de déplacer l'appel à l'ajout d'utilisateur au début du flux, puis d'utiliser le lastInsertId ou une fonction dédiée pour récupérer l'ID et alimenter les sessions. D'autres conseils recommandent de structurer le code en fonctions, d'éviter d'initialiser des sessions avant le succès de l'insertion, et de vérifier l'ID généré avec lastInsertId. En parallèle, des échanges soulignent l'importance de sécuriser le processus et d'éviter l'exposition des identifiants ou des tokens via le client, ce qui peut compromettre la session en cas de faille ou d'injection.

Bobot (l’IA à votre service)
  1. Modérateur
    Bonjour,

    Pour commencer ... tu as bien supprimé toutes les variables de session qui existaient déjà et que tu as certainement alimenté pendant tes tests ???
    A la limite, tu peux tester en navigation privée ou depuis un autre navigateur pour voir si le souci persiste ..

    Ensuite...
    A quel endroit récupères tu ta variable $id ?
    Je suppose que tu veux récupérer l'id auto généré lors de l'insert en base ....
    Dans ce cas, penche toi sur la fonction lastInsertId de PDO..

    Et puis, découper ton code en fonctions le rendrait vachement plus lisible et maintenable ... là c'est un peu le bazard..

    Et à mon avis.. il considère qu'il est déjà logué à cause de ces lignes
     $_SESSION['user'] = array(
                                    'id' =>$id,
                                    
                                );
    

    Pour le savoir . ce n'est pas au niveau du code d'inscription qu'il faut regarder .. mais plutôt au niveau de la vérification de la connexion sur tes autres pages...

    Enfin bon,
    ton code, histoire d'être un peu plus organisé pourrait ressembler à minima à ça
    
    <?php
    session_start();
    error_reporting(E_ALL);
    ini_set('display_errors', true);
    ini_set('display_startup_errors', true);
    
    // je me connecte a la base de donnee
    require_once 'base.php';
    
    function query($sql, $datas = null ){
       global $bdd;
      //Execution de la requete
      try {
          $requete = $bdd->prepare($sql);
          $requete->execute($datas);
          return $requete;
      } catch(Exception $e) {
    
          // en cas d'erreur :
          echo " Erreur ! " . $e->getMessage();
          echo " Les datas : ";
          print_r($datas);
      }
    }
    
    function getLastId(){
      global $bdd;
      return $bdd->lastInsertId();//on retourne l'id qui est créé
    }
    
    function getUserByMail($email){
       //préparation de la requête et des variables afin de verifier si l email est present dans la table
        $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
        $datas = [$email];
        $res = query($sql, $datas);
        return $requete->fetch();
    }
    
    
    function getUserByPseudo($pseudo){
       //préparation de la requête et des variables afin de verifier si l email est present dans la table
        $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
        $datas = [$pseudo];
        $res = query($sql, $datas);
        return $requete->fetch();
    }
    
    function addUser($pseudo, $email, $password, $ip, $key, $confirme){
    
      $password = password_hash($password, PASSWORD_BCRYPT, $cost);
      $ip = $_SERVER['REMOTE_ADDR'];
      $sql ='INSERT INTO utilisateurs(pseudo, email, password, ip, token ,confirmkey,confirme) VALUES(:pseudo, :email, :password, :ip, :token ,:confirmkey,:confirme)';
      $datas = array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmkey' => $key ,'confirme' => $confirme);
      $res = query($sql, $datas );
      return getLastId(); //on retourne l'id créé par l'insert.						
    }
    
    
    
    //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;
    
        $row = getUserByMail($email)
        if (empty($row) {
            
            $row2 = getUserByPseudo($pseudo);
            //on verifie que le pseudo n est pas present
            if (empty($row2)){ 
              //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) {
                      //on verifie les caracteres
                      if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo)){
                         //on verifie que c est bien une email
                        if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                            if ($password == $password_retype) { //on verifie que le pasword retape correpond bien au passord
                                $cost = ['cost' => 12];
                                //on cree la confirmkey
                                $longueurkey =12;
                                $key="";
                                for($i=1;$i<$longueurkey;$i++)
                                  $key .=mt_rand(0,9);
                                //$confirmkey =$key;
                                
                                //on mets a 0 la colonne confirme
                                $confirme=0;
                                
                                //on créé le user
                                $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                              
                                 //on definit et on cree les variables sessions
                                $_SESSION['idinscription'] = $id;
            
    


    ( c'est marrant .. j'ai l'impression que ça fait déjà plusieurs fois que je te réécris ton code... et je ne sais pas pourquoi.. tu retournes toujours sur un truc sale... )
    1
    1. bonjour Jordane

      Merci pour la réponse et la correction
      oui oui bien sur comme toujours je vide bien le navigateur et même plusieurs fois
      question d'être sur et certain ...

      j'ai essaye aussi avec un autre navigateur le soucis demeure

      oui voila je veux récupérer l'id qui est inséré des l'inscription et bien entendu la clé pour envoyer le mail pour que l'utilisateur puisse valider son compte

      Pourtant je t'assure que je n'ai plus jamais bouger a ce code depuis que tu as fais la correction il y a de cela deja plusieurs mois

      Il y a déjà ces functions ...et des nouveautés

      Je viens de tester le code mais il y a une erreur a la ligne 72 avec le if et je ne vois pas de quoi il pourrait s'agir

       if (empty($row) {


      <?php
      session_start();
      error_reporting(E_ALL);
      ini_set('display_errors', true);
      ini_set('display_startup_errors', true);
      
      // je me connecte a la base de donnee
      require_once 'base.php';
      
      function query($sql, $datas = null ){
         global $bdd;
        //Execution de la requete
        try {
            $requete = $bdd->prepare($sql);
            $requete->execute($datas);
            return $requete;
        } catch(Exception $e) {
      
            // en cas d'erreur :
            echo " Erreur ! " . $e->getMessage();
            echo " Les datas : ";
            print_r($datas);
        }
      }
      
      function getLastId(){
        global $bdd;
        return $bdd->lastInsertId();//on retourne l'id qui est créé
      }
      
      function getUserByMail($email){
         //préparation de la requête et des variables afin de verifier si l email est present dans la table
          $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
          $datas = [$email];
          $res = query($sql, $datas);
          return $requete->fetch();
      }
      
      
      function getUserByPseudo($pseudo){
         //préparation de la requête et des variables afin de verifier si l email est present dans la table
          $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
          $datas = [$pseudo];
          $res = query($sql, $datas);
          return $requete->fetch();
      }
      
      function addUser($pseudo, $email, $password, $ip, $key, $confirme){
      
        $password = password_hash($password, PASSWORD_BCRYPT, $cost);
        $ip = $_SERVER['REMOTE_ADDR'];
        $sql ='INSERT INTO utilisateurs(pseudo, email, password, ip, token ,confirmkey,confirme) VALUES(:pseudo, :email, :password, :ip, :token ,:confirmkey,:confirme)';
        $datas = array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmkey' => $key ,'confirme' => $confirme);
        $res = query($sql, $datas );
        return getLastId(); //on retourne l'id créé par l'insert.						
      }
      
      
      
      //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;
      
          $row = getUserByMail($email)
          if (empty($row) {
              
              $row2 = getUserByPseudo($pseudo);
              //on verifie que le pseudo n est pas present
              if (empty($row2)){ 
                //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) {
                        //on verifie les caracteres
                        if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo)){
                           //on verifie que c est bien une email
                          if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                              if ($password == $password_retype) { //on verifie que le pasword retape correpond bien au passord
                                  $cost = ['cost' => 12];
                                  //on cree la confirmkey
                                  $longueurkey =12;
                                  $key="";
                                  for($i=1;$i<$longueurkey;$i++)
                                    $key .=mt_rand(0,9);
                                  //$confirmkey =$key;
                                  
                                  //on mets a 0 la colonne confirme
                                  $confirme=0;
                                  
                                  //on créé le user
                                  $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                
                                   //on definit et on cree les variables sessions
                                  $_SESSION['idinscription'] = $id;
                 
      							
      							
      							
      							
      							
      							//traitement de l envois par mail 
      							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 un  destinataires
      							$to  = $email; // notez la virgule
      							// Sujet
      							$subject= "votre confirmation";
      							// message
      							$message = 
      							'
      							<html>
      								<head>
      									<title>Votre confirmation  </title>
      								</head>
      								<body>
      									<table>
      										<tr>
      											<td>ton pseudo est   </td><td>'.$pseudo .'
      
      											
      						
      						<a href="https://phil.pecheperle.be/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a>
      											
      											</td></br>
      										</tr>
      										<tr>
      											<td>l adresse mail    </td><td>'.$email .'</td></br>
      										</tr>
      										<tr>
      											<td>date</td><td>'.$date1 .'</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 />";
      							}
                                  
                                  
      			// on entre un ou Plusieurs destinataires
      							$to1  = 'perroquet666@hotmail.com'; // notez la virgule
      							// Sujet
      							$subject1= "UN NOUVEL INSCRIT ";
      							// message
      							$message1 = 
      							'
      							<html>
      								<head>
      									<title>un nouveau membre vient de s inscrire </title>
      								</head>
      								<body>
      									<table>
      										<tr>
      											<td>son pseudo est   </td><td>'.$pseudo .'</td></br>
      										</tr>
      										<tr>
      											<td>l adresse mail    </td><td>'.$email .'</td></br>
      										</tr>
      										<tr>
      											<td>date</td><td>'.$date1 .'</td></br>
      										</tr>
      									</table>
      								</body>
      							</html>	';
      							// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
      							$headers1[] = 'MIME-Version: 1.0';
      							$headers1[] = 'content-type: text/html; charset=utf-8';
      							// En-têtes additionnels
      							//$headers1[] =  "From: " . $name . "<". $_POST["email"] .">\r\n";
      							$headers1[] = 'From: '.$email."\r\n".
      							'Reply-To: '.$name."\r\n" .
      							'X-Mailer: PHP/' . phpversion();
      							// Envoi
      							//var_dump($headers);
      							if(mail($to1, $subject1, $message1, implode("\r\n", $headers1))){
      							// 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();
          }
      }
      0
      1. Modérateur
        Ligne 72 il manque une)
        1
    2. oui j'avais essayer
      Mais l'erreur reste
      0
      1. Modérateur
        Si tu donnais le message d'erreur ça pourrait peut-être aider non ??
        1
      2. Modérateur
        @jordane45Et si tu regarde bien le code, à la ligne 71, il manque un point virgule
        1
      3. @jordane45oui juste jordane désolé
        0
    3. oh misère fallait le voir celui la
      je me laisse encore trop souvent attrapé
      Merci Jordane

      Voila l'erreur est passée mais j'ai une autre

      Notice: Undefined variable: requete in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 36

      Fatal error: Uncaught Error: Call to a member function fetch() on null in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php:36 Stack trace: #0 /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php(71): getUserByMail('talonaiguille.b...') #1 {main} thrown in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 36

      qui correspond a cette partie

      function getUserByMail($email){
         //préparation de la requête et des variables afin de verifier si l email est present dans la table
          $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
          $datas = [$email];
          $res = query($sql, $datas);
          return $requete->fetch();
      }


      j'ai tente de comparer avec le morceau suivant qui traite le pseudo mais je vois pas ce qu'il coche
      apparemment c'est une variable non définie
      0
      1. Modérateur
        Il faut mettre res a la place de requête
        1
    4. bonjour jordane
      Merci pour le code et la correction
      plus aucune erreur
      Mais sauf erreur de ma part rien ne vient s'inscrire dans la base de donnée alors que je reçois bien les mails de l'inscription
      et que le processus a l'air de s'être bien déroulé
      puisque l'écran retourne bien la page de l'inscription réussie

      J'ai fouillé toute la base de donnée aucune trace de l'utilisateur enregistré

      je te donne le code corrige

      <?php
      session_start();
      error_reporting(E_ALL);
      ini_set('display_errors', true);
      ini_set('display_startup_errors', true);
      
      // je me connecte a la base de donnee
      require_once 'base.php';
      
      function query($sql, $datas = null ){
         global $bdd;
        //Execution de la requete
        try {
            $requete = $bdd->prepare($sql);
            $requete->execute($datas);
            return $requete;
        } catch(Exception $e) {
      
            // en cas d'erreur :
            echo " Erreur ! " . $e->getMessage();
            echo " Les datas : ";
            print_r($datas);
        }
      }
      
      function getLastId(){
        global $bdd;
        return $bdd->lastInsertId();//on retourne l'id qui est créé
      }
      
      function getUserByMail($email){
         //préparation de la requête et des variables afin de verifier si l email est present dans la table
          $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
          $datas = [$email];
          $res = query($sql, $datas);
          return $res->fetch();
      }
      
      
      function getUserByPseudo($pseudo){
         //préparation de la requête et des variables afin de verifier si l email est present dans la table
          $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
          $datas = [$pseudo];
          $res = query($sql, $datas);
          return $res->fetch();
      }
      
      function addUser($pseudo, $email, $password, $ip, $key, $confirme){
      
        $password = password_hash($password, PASSWORD_BCRYPT, $cost);
        $ip = $_SERVER['REMOTE_ADDR'];
        $sql ='INSERT INTO utilisateurs(pseudo, email, password, ip, token ,confirmkey,confirme) VALUES(:pseudo, :email, :password, :ip, :token ,:confirmkey,:confirme)';
        $datas = array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmkey' => $key ,'confirme' => $confirme);
        $res = query($sql, $datas );
        return getLastId(); //on retourne l'id créé par l'insert.						
      }
      
      
      
      //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;
      
          $row = getUserByMail($email);
          if (empty($row)) {
              
              $row2 = getUserByPseudo($pseudo);
              //on verifie que le pseudo n est pas present
              if (empty($row2)){ 
                //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) {
                        //on verifie les caracteres
                        if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo)){
                           //on verifie que c est bien une email
                          if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                              if ($password == $password_retype) { //on verifie que le pasword retape correpond bien au passord
                                  $cost = ['cost' => 12];
                                  //on cree la confirmkey
                                  $longueurkey =12;
                                  $key="";
                                  for($i=1;$i<$longueurkey;$i++)
                                    $key .=mt_rand(0,9);
                                  //$confirmkey =$key;
                                  
                                  //on mets a 0 la colonne confirme
                                  $confirme=0;
                                  
                                  //on créé le user
                                  $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                
                                   //on definit et on cree les variables sessions
                                  $_SESSION['idinscription'] = $id;
           
                        // on entre un  destinataires
      							$to  = $email; // notez la virgule
      							// Sujet
      							$subject= "votre confirmation";
      							// message
      							$message = 
      							'
      							<html>
      								<head>
      									<title>Votre confirmation  </title>
      								</head>
      								<body>
      									<table>
      										<tr>
      											<td>ton pseudo est   </td><td>'.$pseudo .'
      
      						<a href="https://phil.pecheperle.be/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a>
      											
      											</td></br>
      										</tr>
      										<tr>
      											<td>l adresse mail    </td><td>'.$email .'</td></br>
      										</tr>
      										<tr>
      											<td>date</td><td>'.$date1 .'</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 />";
      							}
                                  
                                  
      			// on entre un ou Plusieurs destinataires
      							$to1  = 'perroquet666@hotmail.com'; // notez la virgule
      							// Sujet
      							$subject1= "UN NOUVEL INSCRIT ";
      							// message
      							$message1 = 
      							'
      							<html>
      								<head>
      									<title>un nouveau membre vient de s inscrire </title>
      								</head>
      								<body>
      									<table>
      										<tr>
      											<td>son pseudo est   </td><td>'.$pseudo .'</td></br>
      										</tr>
      										<tr>
      											<td>l adresse mail    </td><td>'.$email .'</td></br>
      										</tr>
      										<tr>
      											<td>date</td><td>'.$date1 .'</td></br>
      										</tr>
      									</table>
      								</body>
      							</html>	';
      							// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
      							$headers1[] = 'MIME-Version: 1.0';
      							$headers1[] = 'content-type: text/html; charset=utf-8';
      							// En-têtes additionnels
      							//$headers1[] =  "From: " . $name . "<". $_POST["email"] .">\r\n";
      							$headers1[] = 'From: '.$email."\r\n".
      							'Reply-To: '.$name."\r\n" .
      							'X-Mailer: PHP/' . phpversion();
      							// Envoi
      							//var_dump($headers);
      							if(mail($to1, $subject1, $message1, implode("\r\n", $headers1))){
      							// 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();
          }
      }
      0
      1. Modérateur
        Là c'est juste le formulaire d'inscription ... pas le code de validation suite au clic sur le mail ...
        1
    5. oui d'accord jordane mais je devrais au moins voir dans ma base de donnée l'utilisateur inscris avec un token en attende de validation
      0
      1. Pourtant le processus est correct sauf que rien ne vient s'inscrire dans ma base de donnée
        au minimum je devrais voir l'utilisateur avec un token et en attende de validation
        comme avec mon ancien code
        0
        1. il me semble que ce bloc est trop haut dans le code

          function addUser($pseudo, $email, $password, $ip, $key, $confirme){
          
            $password = password_hash($password, PASSWORD_BCRYPT, $cost);
            $ip = $_SERVER['REMOTE_ADDR'];
            $sql ='INSERT INTO utilisateurs(pseudo, email, password, ip, token ,confirmkey,confirme) VALUES(:pseudo, :email, :password, :ip, :token ,:confirmkey,:confirme)';
            $datas = array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmkey' => $key ,'confirme' => $confirme);
            $res = query($sql, $datas );
            return getLastId(); //on retourne l'id créé par l'insert.						
          }
          0
          1. Modérateur
            C'est juste cette partie là qui devrait se trouver avant l'appel de la fonction
            
             //on mets a 0 la colonne confirme
                                        $confirme=0;
                                        
            $password = password_hash($password, PASSWORD_BCRYPT, $cost);
              $ip = $_SERVER['REMOTE_ADDR'];
            
            
                                        //on créé le user
                                        $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                      
            
            1
        2. cette fois ci cela me retourne une page blanche après l'enregistrement avec ce changement

          je te donne le code modifie

          <?php
          session_start();
          error_reporting(E_ALL);
          ini_set('display_errors', true);
          ini_set('display_startup_errors', true);
          
          // je me connecte a la base de donnee
          require_once 'base.php';
          
          function query($sql, $datas = null ){
             global $bdd;
            //Execution de la requete
            try {
                $requete = $bdd->prepare($sql);
                $requete->execute($datas);
                return $requete;
            } catch(Exception $e) {
          
                // en cas d'erreur :
                echo " Erreur ! " . $e->getMessage();
                echo " Les datas : ";
                print_r($datas);
            }
          }
          
          function getLastId(){
            global $bdd;
            return $bdd->lastInsertId();//on retourne l'id qui est créé
          }
          
          function getUserByMail($email){
             //préparation de la requête et des variables afin de verifier si l email est present dans la table
              $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
              $datas = [$email];
              $res = query($sql, $datas);
              return $res->fetch();
          }
          
          
          function getUserByPseudo($pseudo){
             //préparation de la requête et des variables afin de verifier si l email est present dans la table
              $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
              $datas = [$pseudo];
              $res = query($sql, $datas);
              return $res->fetch();
          }
          
          //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;
          
              $row = getUserByMail($email);
              if (empty($row)) {
                  
                  $row2 = getUserByPseudo($pseudo);
                  //on verifie que le pseudo n est pas present
                  if (empty($row2)){ 
                    //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) {
                            //on verifie les caracteres
                            if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo)){
                               //on verifie que c est bien une email
                              if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                  if ($password == $password_retype) { //on verifie que le pasword retape correpond bien au passord
                                      $cost = ['cost' => 12];
                                      //on cree la confirmkey
                                      $longueurkey =12;
                                      $key="";
                                      for($i=1;$i<$longueurkey;$i++)
                                        $key .=mt_rand(0,9);
                                      //$confirmkey =$key;
                                      
                                      function addUser($pseudo, $email, $password, $ip, $key, $confirme){
          
            $password = password_hash($password, PASSWORD_BCRYPT, $cost);
            $ip = $_SERVER['REMOTE_ADDR'];
            $sql ='INSERT INTO utilisateurs(pseudo, email, password, ip, token ,confirmkey,confirme) VALUES(:pseudo, :email, :password, :ip, :token ,:confirmkey,:confirme)';
            $datas = array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmkey' => $key ,'confirme' => $confirme);
            $res = query($sql, $datas );
            return getLastId(); //on retourne l'id créé par l'insert.						
          }
          
                                      //on mets a 0 la colonne confirme
                                      $confirme=0;
                                      
                                      //on créé le user
                                      $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                    
                                       //on definit et on cree les variables sessions
                                      $_SESSION['idinscription'] = $id;
               
                            // on entre un  destinataires
          							$to  = $email; // notez la virgule
          							// Sujet
          							$subject= "votre confirmation";
          							// message
          							$message = 
          							'
          							<html>
          								<head>
          									<title>Votre confirmation  </title>
          								</head>
          								<body>
          									<table>
          										<tr>
          											<td>ton pseudo est   </td><td>'.$pseudo .'
          
          						<a href="https://phil.pecheperle.be/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a>
          											
          											</td></br>
          										</tr>
          										<tr>
          											<td>l adresse mail    </td><td>'.$email .'</td></br>
          										</tr>
          										<tr>
          											<td>date</td><td>'.$date1 .'</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 />";
          							}
                                      
                                      
          			// on entre un ou Plusieurs destinataires
          							$to1  = 'perroquet666@hotmail.com'; // notez la virgule
          							// Sujet
          							$subject1= "UN NOUVEL INSCRIT ";
          							// message
          							$message1 = 
          							'
          							<html>
          								<head>
          									<title>un nouveau membre vient de s inscrire </title>
          								</head>
          								<body>
          									<table>
          										<tr>
          											<td>son pseudo est   </td><td>'.$pseudo .'</td></br>
          										</tr>
          										<tr>
          											<td>l adresse mail    </td><td>'.$email .'</td></br>
          										</tr>
          										<tr>
          											<td>date</td><td>'.$date1 .'</td></br>
          										</tr>
          									</table>
          								</body>
          							</html>	';
          							// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
          							$headers1[] = 'MIME-Version: 1.0';
          							$headers1[] = 'content-type: text/html; charset=utf-8';
          							// En-têtes additionnels
          							//$headers1[] =  "From: " . $name . "<". $_POST["email"] .">\r\n";
          							$headers1[] = 'From: '.$email."\r\n".
          							'Reply-To: '.$name."\r\n" .
          							'X-Mailer: PHP/' . phpversion();
          							// Envoi
          							//var_dump($headers);
          							if(mail($to1, $subject1, $message1, implode("\r\n", $headers1))){
          							// 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();
              }
          0
          1. Modérateur
            mais non !!!!
            Faut pas déplacer la fonction !!!!!
            Les fonctions .. on les créé ( au début du fichier en général )
            puis on les appel là où on en a besoin !

            Tu n'as pas regardé le code que je t'ai donné !!
            1
        3. fausse alerte
          c'est le serveur de hostinger qui n'a pas mis a jour assez vite
          0
          1. voila j'ai refais la modification jordane
            Merci

            Mais cela n'enregistre toujours pas l'utilisateur dans la base de donnée

            <?php
            session_start();
            error_reporting(E_ALL);
            ini_set('display_errors', true);
            ini_set('display_startup_errors', true);
            
            // je me connecte a la base de donnee
            require_once 'base.php';
            
            function query($sql, $datas = null ){
               global $bdd;
              //Execution de la requete
              try {
                  $requete = $bdd->prepare($sql);
                  $requete->execute($datas);
                  return $requete;
              } catch(Exception $e) {
            
                  // en cas d'erreur :
                  echo " Erreur ! " . $e->getMessage();
                  echo " Les datas : ";
                  print_r($datas);
              }
            }
            
            function getLastId(){
              global $bdd;
              return $bdd->lastInsertId();//on retourne l'id qui est créé
            }
            
            function getUserByMail($email){
               //préparation de la requête et des variables afin de verifier si l email est present dans la table
                $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE email = ?";
                $datas = [$email];
                $res = query($sql, $datas);
                return $res->fetch();
            }
            
            
            function getUserByPseudo($pseudo){
               //préparation de la requête et des variables afin de verifier si l email est present dans la table
                $sql = "SELECT pseudo, email, password FROM utilisateurs WHERE pseudo = ?";
                $datas = [$pseudo];
                $res = query($sql, $datas);
                return $res->fetch();
            }
            
                 //on mets a 0 la colonne confirme
                                        $confirme=0;
                                        
                                        //on créé le user
                                        $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
            
            function addUser($pseudo, $email, $password, $ip, $key, $confirme){
            
              $password = password_hash($password, PASSWORD_BCRYPT, $cost);
              $ip = $_SERVER['REMOTE_ADDR'];
              $sql ='INSERT INTO utilisateurs(pseudo, email, password, ip, token ,confirmkey,confirme) VALUES(:pseudo, :email, :password, :ip, :token ,:confirmkey,:confirme)';
              $datas = array('pseudo' => $pseudo,'email' => $email,'password' => $password,'ip' => $ip,'token' => bin2hex(openssl_random_pseudo_bytes(24)),'confirmkey' => $key ,'confirme' => $confirme);
              $res = query($sql, $datas );
              return getLastId(); //on retourne l'id créé par l'insert.						
            }
            
            
            
            //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;
            
                $row = getUserByMail($email);
                if (empty($row)) {
                    
                    $row2 = getUserByPseudo($pseudo);
                    //on verifie que le pseudo n est pas present
                    if (empty($row2)){ 
                      //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) {
                              //on verifie les caracteres
                              if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo)){
                                 //on verifie que c est bien une email
                                if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                    if ($password == $password_retype) { //on verifie que le pasword retape correpond bien au passord
                                        $cost = ['cost' => 12];
                                        //on cree la confirmkey
                                        $longueurkey =12;
                                        $key="";
                                        for($i=1;$i<$longueurkey;$i++)
                                          $key .=mt_rand(0,9);
                                        //$confirmkey =$key;
                                     
                                         //on definit et on cree les variables sessions
                                        $_SESSION['idinscription'] = $id;
                 
                              // on entre un  destinataires
            							$to  = $email; // notez la virgule
            							// Sujet
            							$subject= "votre confirmation";
            							// message
            							$message = 
            							'
            							<html>
            								<head>
            									<title>Votre confirmation  </title>
            								</head>
            								<body>
            									<table>
            										<tr>
            											<td>ton pseudo est   </td><td>'.$pseudo .'
            
            						<a href="https://phil.pecheperle.be/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a>
            											
            											</td></br>
            										</tr>
            										<tr>
            											<td>l adresse mail    </td><td>'.$email .'</td></br>
            										</tr>
            										<tr>
            											<td>date</td><td>'.$date1 .'</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 />";
            							}
                                        
                                        
            			// on entre un ou Plusieurs destinataires
            							$to1  = 'perroquet666@hotmail.com'; // notez la virgule
            							// Sujet
            							$subject1= "UN NOUVEL INSCRIT ";
            							// message
            							$message1 = 
            							'
            							<html>
            								<head>
            									<title>un nouveau membre vient de s inscrire </title>
            								</head>
            								<body>
            									<table>
            										<tr>
            											<td>son pseudo est   </td><td>'.$pseudo .'</td></br>
            										</tr>
            										<tr>
            											<td>l adresse mail    </td><td>'.$email .'</td></br>
            										</tr>
            										<tr>
            											<td>date</td><td>'.$date1 .'</td></br>
            										</tr>
            									</table>
            								</body>
            							</html>	';
            							// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
            							$headers1[] = 'MIME-Version: 1.0';
            							$headers1[] = 'content-type: text/html; charset=utf-8';
            							// En-têtes additionnels
            							//$headers1[] =  "From: " . $name . "<". $_POST["email"] .">\r\n";
            							$headers1[] = 'From: '.$email."\r\n".
            							'Reply-To: '.$name."\r\n" .
            							'X-Mailer: PHP/' . phpversion();
            							// Envoi
            							//var_dump($headers);
            							if(mail($to1, $subject1, $message1, implode("\r\n", $headers1))){
            							// 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();
                }
            }
            0
            1. Modérateur
              Et ça n'affiche pas d'erreur ?
              ça te redirige sur une autre page ?
              Il faudrait désactiver les redirections si tu veux pouvoir voir les éventuelles erreurs...
              N'hésites pas non plus à ajouter quelques var_dump des différentes variables pour voir ce qu'elles valent aux différentes étapes de ton script et ainsi voir si il rentre bien dans tous tes if ... et toutes les fonctions..
              1
          2. Merci pour ton aide jordane
            Non aucune erreur , l'enregistrement se fait normalement je revois bien le mail qui me dit qu'un nouvel utilisateur est inscrit
            ce qui vuex dire que le process s'effectue bien
            Mais rien dans la base de donnée il n'y a rien

            j'ai donc mis en commentaire les redirections et effectuer un premier var_dump

            a cet endroit
              //on créé le user
                                        $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                        var_dump ($id);


            voici les messages d'erreur retournes

            Notice: Undefined variable: pseudo in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 53

            Notice: Undefined variable: email in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 53

            Notice: Undefined variable: password in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 53

            Notice: Undefined variable: ip in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 53

            Notice: Undefined variable: key in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 53

            Notice: Undefined variable: cost in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 58

            Warning: password_hash() expects parameter 3 to be array, null given in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 58
            Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pseudo' cannot be null Les datas : Array ( [pseudo] => [email] => [password] => [ip] => 212..133 [token] => 966e172da08120e4204ba8cc129768ee0cd5e46f3 [confirmkey] => [confirme] => 0 )
            Notice: Undefined variable: date1 in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 128

            Notice: Undefined variable: name in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 139

            Notice: Undefined variable: date1 in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 172

            Notice: Undefined variable: name in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 183
            0
            1. Modérateur
              mais;.. qu'est-ce que tu as été me déplacer le code d'ajout de l'utilsiateur ??

              La fonction, elle, doit se trouver au début du code tel que je te l'avais donné.

              Ensuite, dans tes IF, ( là ou je l'avais mis au départ), tu dois avoir l'appel à cette fonction...
              donc les lignes de code
              
               //on mets a 0 la colonne confirme
              $confirme=0;
                                          
              $password = password_hash($password, PASSWORD_BCRYPT, $cost);
              $ip = $_SERVER['REMOTE_ADDR'];
              
              //on créé le user
               $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                        
              
              

              Code à remettre, donc, juste avant l'envoi des mails !
              1
          3. Jordane j'ai fait exactement ce que tu m'as dit les functions début du code

            dans le post 15 tu me dis de déplacer
            ce morceau de code juste avant l'appel de la function
            //on mets a 0 la colonne confirme
                                        $confirme=0;
                                        
            $password = password_hash($password, PASSWORD_BCRYPT, $cost);
              $ip = $_SERVER['REMOTE_ADDR'];
            
            
                                        //on créé le user
                                        $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);


            ah je pense comprendre le soucis je l'ai déplacé avant la création de la function

            car lorsque je laisse le morceau de code comme a l'origine cela ne fonctionne pas non plus

            tu vas me prendre pour un âne mais je m'embrouille les pinceaux cette fois

            $row2 = getUserByPseudo($pseudo);
                    //on verifie que le pseudo n est pas present
                    if (empty($row2)){ 
                      //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) {
                              //on verifie les caracteres
                              if(preg_match('/^[a-z_\-0-9]+$/i', $pseudo)){
                                 //on verifie que c est bien une email
                                if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                    if ($password == $password_retype) { //on verifie que le pasword retape correpond bien au passord
                                        $cost = ['cost' => 12];
                                        //on cree la confirmkey
                                        $longueurkey =12;
                                        $key="";
                                        for($i=1;$i<$longueurkey;$i++)
                                          $key .=mt_rand(0,9);
                                        //$confirmkey =$key;
                                        
                                        
                 //on mets a 0 la colonne confirme
                                        $confirme=0;
                                        
                                        //on créé le user
                                        $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                        var_dump ($id);
            0
            1. Modérateur
              Lignes 21 à 25 .. à remplacer par :
              
               //on mets a 0 la colonne confirme
              $confirme=0;
                                          
              $password = password_hash($password, PASSWORD_BCRYPT, $cost);
              $ip = $_SERVER['REMOTE_ADDR'];
              
              //on créé le user
               $id =  addUser($pseudo, $email, $password, $ip, $key, $confirme);
                                        
              


              et RETIRER DANS la fonction addUSer
              les lignes
                $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                $ip = $_SERVER['REMOTE_ADDR'];


              ce n'est pas compliqué pourtant...
              1
            2. @jordane45Merci Jordane
              voila cette fois nous y sommes
              Merci pour ta patience et ta compréhension
              l'utilisateur est bien dans la base de donnée
              voyons a présent pour cette variable de session
              1
          4. Lorsque je remets comme le code d'origine que tu m'as donne en désactivant les rediections voici les messages d erreur

            Notice: Undefined variable: ip in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 100

            Notice: Undefined variable: cost in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 52

            Warning: password_hash() expects parameter 3 to be array, null given in /home/u434600775/domains/pecheperle.be/public_html/phil/inscription_traitement.php on line 52
            Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'password' cannot be null Les datas : Array ( [pseudo] => talon [email] => talonaiguille.be@gmail.com [password] => [ip] => 212.2233 [token] => 4b714d583b052b18758501f085ec8b9c0667e5 [confirmkey] => 81248209 [confirme] => 0 )
            0
            1. le problème vient surement du code du password car rien n'est retourne dans le tableau
              0
          5. un tout très grand merci a jordane pour sa patience
            0
            1. Modérateur
              Pour ta variable de session, si tu as toujours le souci d'avoir l'utilisateur connecté aussitôt qu'il a créé son compte, il faut nous montrer le code de vérification que tu fais sur tes autres pages...
              1
          6. non jordane le défaut est disparu
            C'était un problème lorsque je mettais la variable de session dans mon code
            Mais avec ton code cela a disparu
            0
            1. Modérateur
              Donc sujet à mettre en RESOLU
              1
          7. oui et encore mille fois merci
            0