IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vérifier qu'un email n'existe pas avant de créer un nouveau compte


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Vérifier qu'un email n'existe pas avant de créer un nouveau compte
    Bonjour à tous,
    je viens de lire l'excellent tuto sur PHP5 et j'aurais besoin d'un peu d'aide. Je travaille sur un script existant assez complexe traitant un formulaire. Je voudrais y rajouter une vérification sur une table users : si le mail saisi dans le formulaire correspond à l'une des adresses existantes, alors il ne se passe rien. Sinon, on crée une nouvelle entrée dans users

    voici le code de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    function webform_insert($node) {
      global $user;
     
      // Correctly set the submission limits.
      if ($_POST['enforce_limit'] === 'no') {
        $node->submit_limit = '-1';
        $node->submit_interval = '157784630'; // 5 years, close enough to 'ever'.
      }
     
      // Insert the Webform.
      db_query("INSERT INTO {webform} (nid, confirmation, redirect_post, submit_limit, submit_interval, email, email_from_name, email_from_address, email_subject, additional_validate, additional_submit) VALUES (%d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s')", $node->nid, $node->confirmation, $node->redirect_post, $node->submit_limit, $node->submit_interval, $node->email, $node->email_from_name, $node->email_from_address, $node->email_subject, $node->additional_validate, $node->additional_submit);
      //Mon code
      $verif = db_query("SELECT COUNT (mail AS user_mail) FROM {users} WHERE user_mail = ".$node->email_from_name);
      if($verif==0){
      echo 'nouvo';
      	$nouvo = db_query("INSERT INTO {users} (name, pass, mail, init) VALUES ('$prenom', '$mail', '$mail', '$mail')");
    	 $destinataire= $mail;
    	 $sujet = "Votre compte  à été créé";
    	 $headers = "From: Infosite <info@infosite.fr>\r\n";
    	 $headers .="MIME-version: 1.0\r\n";
    	 $headers .='Content-Type: text/html; charset="UTF-8"'."\n"; 
    	 $message= "Bienvenue sur le site Infosite.fr. Votre compte est désormais actif. Pour vous connecter utilisez votre pr&eacute;nom comme login et votre e-mail comme mot de passe. Vous pourrez ensuite modifier ces donn&eacute;e dans votre profil.";
    	 mail($destinataire, $sujet, $message, $headers);
      }
    //////--------------------
      // Insert the components into the database.
      if (is_array($node->webformcomponents) && !empty($node->webformcomponents)) {
        foreach ($node->webformcomponents as $cid => $component) {
          db_query("INSERT INTO {webform_component} (nid, cid, pid, form_key, name, type, value, extra, mandatory, weight) VALUES (%d, %d, %d, '%s', '%s', '%s', '%s', '%s', %d, %d)",
            $node->nid, $cid, $component['parent'], $component['form_key'], $component['name'], $component['type'], $component['value'], serialize($component['extra']), ($component['mandatory'] ? 1 : 0), $component['weight']
          );
        }
      }
    }
    J'ai testé tout ça mais il ne se passe absolument rien : ni erreur ni création de compte ni envoi de mail.... Je ne sais pas si la vérification elle même est déclanchée...
    Je me demande si je peut utiliser un trigger car je n'utilise pas SQLlite mais Mysql...
    Bref j'ai besoins d'aide...

    Merci d'avance

  2. #2
    Membre confirmé Avatar de alexp
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    459
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 459
    Points : 532
    Points
    532
    Par défaut
    pour vérifier la presence d'une adresse mail dans une base de donnée, tu peux compter le nombre de fois ou elle apparait dans ladite base. Si le nombre de fois est négatif, ça veut dire qu'elle n'est pas presente.
    un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    // Connexion à MySQL
    mysql_connect("localhost", "sdz", "mot_de_passe");
    mysql_select_db("coursphp");
     
    // -------
    // ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
    // Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse ip du visiteur
    $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
    $donnees = mysql_fetch_array($retour);
     
    if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
    {
        mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
    }
    else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
    {
        mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
    }
    ?>

Discussions similaires

  1. Vérifier qu'un élément n'existe pas dans la BDD
    Par choumerv dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 14/03/2014, 15h04
  2. Réponses: 6
    Dernier message: 09/01/2008, 12h56
  3. Si MATABLE n'existe pas alors la créer
    Par CDVDS dans le forum Sybase
    Réponses: 1
    Dernier message: 19/06/2007, 16h56
  4. [SQL] Vérifier qu'il n'existe pas dans la base
    Par Nemrod13 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 11/06/2007, 18h13
  5. Réponses: 2
    Dernier message: 21/05/2007, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo