Function pseudo_existe($pseudo)

Fermé
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 30 avril 2015 à 12:32
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 1 juin 2015 à 17:55
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 76 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 17 octobre 2020 5
Modifié par allan59820 le 30/04/2015 à 13:15
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 76 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 17 octobre 2020 5
30 avril 2015 à 13:04
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 lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
30 avril 2015 à 20:51
Pour le deuxième script je le mets dans register.php ou functions.php ?? sinon encore merci ;)
0
allan59820 Messages postés 76 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 17 octobre 2020 5 > Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020
1 mai 2015 à 02:21
le 2eme script c'est dans register.php
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
24 mai 2015 à 21:35
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 lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
1 juin 2015 à 17:55
ç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