Problème avec une variable de session

Résolu/Fermé
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 - 11 mai 2022 à 22:03
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 - 12 mai 2022 à 17:36
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

jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
11 mai 2022 à 22:26
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... )
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
11 mai 2022 à 22:44
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();
    }
}
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
11 mai 2022 à 22:52
Ligne 72 il manque une)
1
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
11 mai 2022 à 22:53
oui j'avais essayer
Mais l'erreur reste
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
11 mai 2022 à 23:07
Si tu donnais le message d'erreur ça pourrait peut-être aider non ??
1
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682 > jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024
11 mai 2022 à 23:08
Et si tu regarde bien le code, à la ligne 71, il manque un point virgule
1
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187 > jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024
11 mai 2022 à 23:09
oui juste jordane désolé
0
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
11 mai 2022 à 23:20
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
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 07:18
Il faut mettre res a la place de requête
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 11:28
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();
    }
}
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 11:31
Là c'est juste le formulaire d'inscription ... pas le code de validation suite au clic sur le mail ...
1
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 11:34
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 12:02
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 12:33
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.						
}
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 13:06
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 13:15
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();
    }
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 13:18
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 13:18
fausse alerte
c'est le serveur de hostinger qui n'a pas mis a jour assez vite
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 13:23
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();
    }
}
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 14:08
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 15:07
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
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 15:10
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 15:26
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);
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 16:29
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187 > jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024
12 mai 2022 à 17:03
Merci 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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
Modifié le 12 mai 2022 à 15:39
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 )
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 15:52
le problème vient surement du code du password car rien n'est retourne dans le tableau
0
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 17:10
un tout très grand merci a jordane pour sa patience
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 17:21
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
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 17:26
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
jordane45 Messages postés 38221 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 juillet 2024 4 682
12 mai 2022 à 17:32
Donc sujet à mettre en RESOLU
1
flexi2202 Messages postés 3800 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 mai 2024 187
12 mai 2022 à 17:36
oui et encore mille fois merci