Comment vérifier si le pseudo est déjà dans la base de donnée

Signaler
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
-
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
-
bonjour a tous
je souhaiterais pouvoir vérifier si le pseudo est déjà présent dans la base de donnée avant l inscription

voici mon code mais cela ne semble pas etre bon et correct

<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
?>
<?php
require_once 'config.php';
if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
    //$pseudo = ($_POST['pseudo']);
    //$email = ($_POST['email']);
    //$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;
$ $password= !empty($_POST[' $password']) ? $_POST[' $password'] : NULL;
$password_retype= !empty($_POST['password_retype']) ? $_POST['password_retype'] : NULL;
    //préparation de la requête et des variables
    $sql = "SELECT pseudo, email, password FROM users WHERE email, pseudo = ?, ?";

    $datas = array(
        $email,
        $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();
    if ($row == 0)
    {
        if (strlen($pseudo) <= 100)
        {
            if (strlen($email) <= 100)
            {
                if (filter_var($email, FILTER_VALIDATE_EMAIL))
                {
                    if ($password == $password_retype)
                    {
                        $cost = ['cost' => 12];
                        $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                        $ip = $_SERVER['REMOTE_ADDR'];
                        $insert = $bdd->prepare('INSERT INTO users(pseudo, email, password, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
                        $insert->execute(array(
                            'pseudo' => $pseudo,
                            'email' => $email,
                            'password' => $password,
                            'ip' => $ip,
                            'token' => bin2hex(openssl_random_pseudo_bytes(24))
                        ));
                        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=email_length');
                die();
            }
        }
        else
        {
            header('Location: inscription.php?reg_err=pseudo_length');
            die();
        }
    }
    else
    {
        header('Location: inscription.php?reg_err=already');
        die();
    }
}

7 réponses

Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
bonjour,
je ne vois aucun commentaire qui décrit ce que fait le code.
as-quelle ligne essaies-tu de vérifier si le pseudo est déjà présent dans la base de donnée?
tu écris que cela ne semble pas être bon et correct: comment cela se comporte-t-il? en prenant le temps de le comprendre et de l'expliquer, tu vas peut-être mieux comprendre le code que tu as écrit.
Messages postés
33135
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 juillet 2021
3 638
WHERE email, pseudo = ?, ?";


Where email quoi ??

Le souci vient de ta requête SQL et non pas de ton code PHP
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
merci jordane pour l aide

je vais lancer peut être une bêtise

peut être ceci
        WHERE email=?, pseudo = ?";     
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880 >
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021

tu essaies ainsi au hasard jusqu'à ce que cela ne donne plus de message d'erreur?
pourquoi ne pas plutôt passer un peu de temps à étudier la syntaxe SQL?
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139 >
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021

ah non voila j ai trouve il doit y avoir AND et pas une virgule

donc

WHERE email=? AND pseudo = ?";  


mais j ai des nouvelles erreurs
pourtant je n ai que du php dans le code


Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd4/105/15003105/public_html/phil/inscription_traitement.php:68) in /storage/ssd4/105/15003105/public_html/phil/inscription_traitement.php on line 81
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880 >
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021

Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139 >
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021

merci pour le lien mais je n ai aucun code html dans cette page
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
bonjour yg_be
merci pour la réponse
je pensais l avoir suffisamment commente

je viens de rajouter des commentaires
donc la vérification ce passe sur ce morceau de code

    //préparation de la requête et des variables afin de vérifier si le pseudo et l email sont déjà présent dans la table 
    $sql = "SELECT pseudo, email, password FROM users WHERE email, pseudo = ?, ?";

    $datas = array(
        $email,
        $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();
    if ($row == 0)
    {


et l endroit du message d erreur en cas de pseudo ou de mail présent dans la table

    else
    {
		//message a afficher si le pseudo ou l email ne sont pas bons
        header('Location: inscription.php?reg_err=already');
        die();
    }


voici le message d erreur lorsque je valide les données pour l inscription

Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' pseudo = 'perroquet666@hotmail.com', 'phil2'' at line 1 Les datas : Array ( [0] => perroquet666@hotmail.com [1] => phil2 )
Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd4/105/15003105/public_html/phil/inscription_traitement.php:28) in /storage/ssd4/105/15003105/public_html/phil/inscription_traitement.php on line 56



le code complet
<?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 'config.php';
if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
    //$pseudo = ($_POST['pseudo']);
    //$email = ($_POST['email']);
    //$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;
$ $password= !empty($_POST[' $password']) ? $_POST[' $password'] : NULL;
$password_retype= !empty($_POST['password_retype']) ? $_POST['password_retype'] : NULL;

    //préparation de la requête et des variables afin de verifier si le psedo et l email sont deja preset dans la table 
    $sql = "SELECT pseudo, email, password FROM users WHERE email, pseudo = ?, ?";

    $datas = array(
        $email,
        $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();
    if ($row == 0)
    {
        if (strlen($pseudo) <= 100)
        {
            if (strlen($email) <= 100)
            {
                if (filter_var($email, FILTER_VALIDATE_EMAIL))
                {
                    if ($password == $password_retype)
                    {
                        $cost = ['cost' => 12];
                        $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                        $ip = $_SERVER['REMOTE_ADDR'];
                        $insert = $bdd->prepare('INSERT INTO users(pseudo, email, password, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
                        $insert->execute(array(
                            'pseudo' => $pseudo,
                            'email' => $email,
                            'password' => $password,
                            'ip' => $ip,
                            'token' => bin2hex(openssl_random_pseudo_bytes(24))
                        ));
                        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=email_length');
                die();
            }
        }
        else
        {
            header('Location: inscription.php?reg_err=pseudo_length');
            die();
        }
    }
    else
    {
		//message a afficher si le pseusdo ou l email ne sont pas bons
        header('Location: inscription.php?reg_err=already');
        die();
    }
}

Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
peut être que je ne peux pas faire la vérification du pseudo et de l email en même temps ?
Messages postés
16443
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 juillet 2021
880
tu veux vérifier qu'il n'existe pas un autre compte ayant exactement le même pseudo et exactement le même email?
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
yg_be
merci pour l aide
en fait je veux vérifier qu il n y a pas deux fois le même pseudo ou deux fois le même email dans ma base de donnée
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
je pense avoir trouve je reviens avec mon code
pour avoir votre avis
Messages postés
3035
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
26 juillet 2021
139
voici donc le code qui semble fonctionner sans aucun message d erreur
si vous pouviez me dire ce que vous en pensez

<?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 'config.php';
if (!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
    //$pseudo = ($_POST['pseudo']);
    //$email = ($_POST['email']);
    $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;
//$password= !empty($_POST[' $password']) ? $_POST[' $password'] : NULL;
//$password_retype= !empty($_POST['password_retype']) ? $_POST['password_retype'] : NULL;

    //préparation de la requête et des variables afin de vérifier si l email est présent dans la table 
	 $sql = "SELECT pseudo, email, password FROM users 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 vérifier si le pseudo est présent dans la table 
		 $sql = "SELECT pseudo, email, password FROM users 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();
if ($row == 0)
{
        if (strlen($pseudo) <= 100)
        {
            if (strlen($email) <= 100)
            {
                if (filter_var($email, FILTER_VALIDATE_EMAIL))
                {
                    if ($password == $password_retype)
                    {
                        $cost = ['cost' => 12];
                        $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                        $ip = $_SERVER['REMOTE_ADDR'];
                        $insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
                        $insert->execute(array(
                            'pseudo' => $pseudo,
                            'email' => $email,
                            'password' => $password,
                            'ip' => $ip,
                            'token' => bin2hex(openssl_random_pseudo_bytes(24))
                        ));
                        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=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();
    }
}