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

Fermé
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 - 11 juil. 2021 à 15:05
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 - 11 juil. 2021 à 17:26
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

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
11 juil. 2021 à 15:12
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.
1
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
11 juil. 2021 à 15:56
WHERE email, pseudo = ?, ?";


Where email quoi ??

Le souci vient de ta requête SQL et non pas de ton code PHP
1
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
11 juil. 2021 à 16:13
merci jordane pour l aide

je vais lancer peut être une bêtise

peut être ceci
        WHERE email=?, pseudo = ?";     
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024
11 juil. 2021 à 16:24
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?
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179 > flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024
11 juil. 2021 à 16:30
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
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024
11 juil. 2021 à 16:51
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179 > yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024
11 juil. 2021 à 17:06
merci pour le lien mais je n ai aucun code html dans cette page
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
11 juil. 2021 à 15:57
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();
    }
}

0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
11 juil. 2021 à 16:04
peut être que je ne peux pas faire la vérification du pseudo et de l email en même temps ?
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
11 juil. 2021 à 16:22
tu veux vérifier qu'il n'existe pas un autre compte ayant exactement le même pseudo et exactement le même email?
0

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

Posez votre question
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
11 juil. 2021 à 17:04
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
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
11 juil. 2021 à 17:13
je pense avoir trouve je reviens avec mon code
pour avoir votre avis
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
11 juil. 2021 à 17:26
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();
    }
}
0