Function pseudo_existe($pseudo)

Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -  
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Sachant que mon script functions.php est le suivant :

<?php
try
{
$bdd = new PDO ('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

function inscrire_utilisateur($pseudo,$password,$email,$sexe,$apropos)
{
Global $bdd;

$password=sha1($password);
$sql = "INSERT INTO utilisateurs(pseudo,password,email,sexe,apropos)
VALUES (:pseudo,:password,:email,:sexe,:apropos)";
$result = $bdd->prepare($sql);
$result->bindValue('pseudo', $pseudo, PDO::PARAM_STR);
$result->bindValue('password', $password, PDO::PARAM_STR);
$result->bindValue('email', $email, PDO::PARAM_STR);
$result->bindValue('sexe', $sexe, PDO::PARAM_STR);
$result->bindValue('apropos', $apropos, PDO::PARAM_STR);
$result->execute();
}



Je lui ai rajouté ceci :

//la function qui va vérifier si pseudo existe($pseudo)

function pseudo_existe($pseudo)
{
$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '');
//donc la, la verification:
$req = $bdd->query('SELECT COUNT(*) FROM utilisateurs WHERE pseudo="'.$pseudo.'"');
$etat = $req->fetchColumn();

if($etat == 0)
{

}

//sinon
else
{
echo('Le pseudo que vous avez choisi est déjà prit');
}
}




pour éviter les doublons de pseudos. Mais quand je vais dans mon site, je m'inscrit avec un pseudo identique, il me fait "Le pseudo que vous avez choisi est déjà pritInscription terminée, vous pouvez vous connecter", et quand je vais dans ma bdd "utilisateurs", les données du pseudo doublon ont été enregistrés, que faire ? qu'est ce qui ne va pas ?
A voir également:

1 réponse

allan59820 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   5
 
Bonjour,

voila ce que j'utilise pour mes formulaires :
voici la fonction pour éviter les doublons :

//vérifie que les données ne sont pas en double dans la base de données
if(!function_exists('is_already_in_use')) {
 function is_already_in_use($field, $value, $table) {
  global $db;

  $q = $db->prepare("SELECT id FROM $table WHERE $field = ?");
  $q->execute([$value]);

  $count = $q->rowCount();

  $q->closeCursor();

  return $count;
 }
}


et voici le traitement du formulaire :

<?php

require('config/database.php');
require('includes/functions.php');

 
 //si le formulaire a été soumis
 if(isset($_POST['register'])) {

  // si tous les champs sont remplis
  if(not_empty(['name', 'pseudo', 'email', 'password', 'password_confirm'])) {

   $errors = []; //tableau contenant l'ensemble des erreurs

   extract($_POST);

  

   //si le pseudo est deja dans la bdd
   if(is_already_in_use('pseudo', $pseudo, 'users')) {
    $errors[] = "Le pseudonyme est déja utilisé.";
   }

   //si l'adresse mail est deja dans la bdd
   if(is_already_in_use('email', $email, 'users')) {
    $errors[] = "L'adresse e-mail est déja utilisée.";
   }


   //si il y a 0 erreur
   if(count($errors) == 0) {

    
        //enregistrement du membre dans la base de donnée
        $q = $db->prepare('INSERT INTO users(name, pseudo, email, password)
                  VALUES(:name, :pseudo, :email, :password)');
        $q->execute([

         'name' => $name,
         'pseudo' => $pseudo,
         'email' => $email,
         'password' => ($password)

        ]);

        redirect('index.php');

   } else {
    save_input_data();
   }

  } else {

   //si tous les champs ne sont pas remplis
   $errors[] = "Veuillez remplir s'il vous plaît tous les champs";
   save_input_data();


  }

 } else {
  clear_input_data();
 }


?>


<?php require('views/register.views.php'); ?>
0
allan59820 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   5
 
pour les doublons occupe toi que de is_already_in_use car le reste ne marchera pas car je ne t'ai pas donné les fonctions. mais cette fonction marche nickel est n'autorise aucun double de pseudo ni d'email. et surtout dans ta bdd met un clé unique a tous les champs que tu ne veut pas en double.
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Pour le deuxième script je le mets dans register.php ou functions.php ?? sinon encore merci ;)
0
allan59820 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   5 > Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention  
 
le 2eme script c'est dans register.php
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Comment je fais pour les 2 requires ? j'ai pas de fichier config ni database.php
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
ça me fait Warning: require(config/database.php): failed to open stream: No such file or directory in C:\wamp\www\rs\pages\register.php on line 100

et

Fatal error: require(): Failed opening required 'config/database.php' (include_path='.;C:\php\pear') in C:\wamp\www\rs\pages\register.php on line 100
0