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

flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   -  
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   -
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();
    }
}

A voir également:

7 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention  
 
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 3822 Date d'inscription   Statut Membre Dernière intervention   190 > flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention  
 
0
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   190 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci pour le lien mais je n ai aucun code html dans cette page
0
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
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 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
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 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
je pense avoir trouve je reviens avec mon code
pour avoir votre avis
0
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
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