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

Langage PHP Discussion :

[Mail] valider par mail un formulaire et fonction rand


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2006
    Messages : 71
    Points : 43
    Points
    43
    Par défaut [Mail] valider par mail un formulaire et fonction rand
    bonjour
    je fait un formulaire d'inscription
    pseudo
    mdp
    retaper mdp
    mail

    je les envoie dans une table compte definifif avec une clef avec la fonction rand()

    cela envoie bien le mail dans la boite du destinataire avec la clef

    par contre quand je regarde dans ma table MYSQL
    j'ai une clef qui reste dans phpmyadmin la meme chose dans tout mes test

    le client clique sur le lient cela verifier le pseudo et la clef si sont identique
    si il sont identique, cela affecte les champs dans la teble compte definifif et efface les donnee de la table compte provisoir

    je ne sais pas d'ou peut venir l'erreur
    merci de m'aider
    PS: quand je ne met pas cette clef tout fonctionne bien!

    mon code php

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
     
    <?php
     
    //--------------------------------------------
    // FORMULAIRE D'INSCRIPTION
    //
    // Envoi des données dans la table "comptes_provisoirs" si les conditions sont remplies
    // -------------------------------------------
     
    // variable initialisée à zero pour tester les conditions
    $nb_faux = 0;
     
    if (isset($_POST['pseudo']) &&
    isset($_POST['password']) &&
    isset($_POST['confirm_password']) &&
    isset($_POST['mail']))
    {
    $pseudo = $_POST['pseudo'];
    $password = $_POST['password'];
    $confirm_password = $_POST['confirm_password'];
    $mail = $_POST['mail'];
     
    // incrémenter la variable $nb_faux si les champs du formulaire sont  vides
    if (empty($_POST['pseudo'])  ||
    empty($_POST['password']) ||
    empty($_POST['confirm_password']) ||
    empty($_POST['mail']))
    {        
    ?>
                Champs non remplis<br/>
                <?php
    $nb_faux++;
    }    
     
    // incrementer la variable $nb_faux si des caracteres ne sont pas autorisés pour le pseudo
    if (!preg_match('`^(\w{4,15})$`', $pseudo))
    {
    ?>
                Caractères non autorisés pour le pseudo<br/>
                <?php
    $nb_faux++;
    }
     
    // incrementer la variable $nb_faux si des caracteres ne sont pas autorisés pour le mot de passe et sa confirmation
    if (!preg_match('`^(\w{4,15})$`', $password) or !preg_match('`^(\w{4,15})$`', $confirm_password ))    
    {
    ?>
                Caractères non autorisés pour le mot de passe<br/>
                <?php
    $nb_faux++;
    }
     
    // incrementer la variable $nb_faux si le mot de passe et la confirmation du mot de passe ne sont pas les meme
    if ($password != $confirm_password)
    {
    ?>
                Mauvais pass<br/>
                <?php
    $nb_faux++;
    }
     
    // incrementer la variable $nb_faux si le pseudo existe dans la base de donnée
    if ($nb_faux >= 0)
    {
    include("pcdb.php");
    $connexion = mysql_connect($hote, $utilisateur, $mdp) or die('<br/>Connexion au serveur impossible.<br/>
                        Contactez le webmaster si le problème n\'est pas résolu.<br/>');
     
    $choix_base = mysql_select_db($data_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>
                        Contactez le webmaster si le problème n\'est pas résolu.<br/>');
     
    $requete = "SELECT pseudo FROM $table_cp WHERE pseudo='$pseudo'";
    $resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
    Contactez le webmaster si le problème n\'est pas résolu.<br/>');
    $ligne = mysql_fetch_array($resultat);
     
     
    if ($pseudo == $ligne['pseudo'])
    {
    ?>
                Ce pseudo existe déja sur ce site<br/>
                <?php
    $nb_faux++;
    }
    }
     
    //  incrémenter la variable $nb_faux si la case à cocher "conditions"  est null        
    if (isset($_POST['conditions']) == null)
    {
    ?>
                Conditions non coché<br/>
                <?php
    $nb_faux++;    
    }
     
    // affectation de la chaine "oui" ou "non" dans une variable pour la newsletter
    if (isset($_POST['newsletter']) != null)
    {
    $newsletter = "oui";
    }
    else
    {
    $newsletter = "non";
    }
     
    // connexion à la base de donnée si il n'y a pas d'erreur (champs oubliés, expressions régulirères, vérification de mot de passe, vérification du pseudo)
    if ($nb_faux == 0)
    {  
    include("pcdb.php");
     
    // affecter un nombre aléatoire dans la variable clef qui servira  a la validation du compte par mail
    $clef = "0123456789";
    $clef = rand();
     
    // requette envoi les données de l utilisateur dans la table comptes_provisoirs
    $connexion = mysql_connect($hote, $utilisateur, $mdp) or die('<br/>Connexion au serveur impossible.<br/>
                        Contactez le webmaster si le problème n\'est pas résolu.<br/>');
    $choix_base = mysql_select_db($data_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>
                        Contactez le webmaster si le problème n\'est pas résolu.<br/>');
    $requete = "INSERT INTO $table_cp VALUES
    ('', '$pseudo', '$password', '$mail', '$newsletter', '$clef')";
    $resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
    Contactez le webmaster si le problème n\'est pas résolu.<br/>');
    mysql_close($connexion);
     
    // Envoyer le mail si la requête à fonctionnée
    if ($resultat == true)
    {
    ?>
                Vous allez reçevoir un mail pour la validation de votre compte<br/>
     
            <?php    echo ($clef) ?>
                <?php
     
    $mail_destinataire = $_POST['mail'];            
    $sujet = "jeu, validation de l'inscription";
    $message = "Cet email a été envoyé à partir de http://www.allomamannounou.com
    Ton mot de passe est: $password \n Ton pseudo est: $pseudo
    Pour valider ton inscription clique sur le lien suivant.
    Nous te demandons ca  pour s'assurer que l'adresse mail que tu as entrée était correcte.
    Ceci pour prévenir du spam et des abus.
    http://allomamannounou.free.fr/service/creacv/inscription.php?&pseudo=$pseudo&clef=$clef
    Le Webmaster";
    $head = "Bonjour $pseudo ";
    mail($mail_destinataire, $sujet, $message, $head);
    }
    }
    }
     
    //--------------------------------------------------------------------
    // VALIDATION DU COMPTE APRES INSCRIPTION
    //
    // Verification du lien de validation via mail :
    // 1 - connexion  si la clef et le pseudo existe dans la table "comptes_provisoirs"
    // 2 - transfert des données dans la table "comptes_definitifs"
    // 3 - suppression des données dans la table "comptes_provisoirs"
    //--------------------------------------------------------------------
     
    if (isset($_GET['pseudo']) && isset($_GET['clef']))
    {
    $pseudo = $_GET['pseudo'];
    $clef = $_GET['clef'];
     
    include("pcdb.php");
     
    // requette chercher les données lorsque le champs pseudo et le champs clef existent dans la table "comptes_provisoirs"
    $connexion = mysql_connect($hote, $utilisateur, $mdp) or die('<br/>Connexion au serveur impossible.<br/>
                    Contactez le webmaster si le problème n\'est pas résolu.<br/>');
    $choix_base = mysql_select_db($data_base, $connexion) or die('<br/>Sélection de la base de donnée echouée.<br/>
                    Contactez le webmaster si le problème n\'est pas résolu.<br/>');                                                               
    $requete = "SELECT pseudo, password, mail, newsletter, FROM $table_cp WHERE pseudo = '$pseudo' AND clef = '$clef'";
    $resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
    Contactez le webmaster si le problème n\'est pas résolu.<br/>');
     
    // affecter les infos utilisateurs si la clef et le pseudo existent dans la table "comptes_provisoirs"
    if($donnees = mysql_fetch_array($resultat))
    {
    $pseudo = $donnees['pseudo'];
    $password = $donnees['password'];
    $mail = $donnees['mail'];
    $newsletter = $donnees['newsletter'];
     
    // requette transferer les données de la table "comptes_provisoirs" à la table "comptes_definitifs"
    $requete = "INSERT INTO $table_cd VALUES('',  '$pseudo', '$password', '$mail', '$newsletter')";
    $resultat = mysql_query($requete) or die('<br/> Exécution de la requête impossible.<br/>
    Contactez le webmaster si le problème n\'est pas résolu.<br/>');
     
    // requette suppression des données provisoir de la table "comptes_definitifs"
    $requete = "DELETE FROM $table_cp WHERE clef = '$clef' AND pseudo = '$pseudo'";
    $resultat = mysql_query($requete) or die('<br/>Exécution de la requête impossible.<br/>
    Contactez le webmaster si le problème n\'est pas résolu.<br/>');
    mysql_close($connexion);
    ?>
                Votre compte est validé<br/>
                <?php
    }
    else
    {
    ?>
                Votre compte est deja validé ou le lien de validation est incorrect<br/>
                <?php
    }
    }
     
    ?>
    Mon objectif est de vous accompagner afin d'améliorer votre visibilité sur Internet. Pédagogue né, j’excelle aussi dans la transmission de connaissances afin de vous rendre autonome dans votre communication Web. Mes clients apprécient la qualité de mes conseils, mon respect des délais et la rigueur de mes méthodes. Freelance en Webmarketing (expert en Référencement naturel SEO / Référencement payant SEA) depuis 1999, j'interviens pour des missions Freelance en Référencement Naturel SEO, optimisation de campagnes Adwords (SEA), en stratégie Webmarketing et Social Media avec leurs gestion publicitaire.

    Web agency prestashop

  2. #2
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Excuse moi de ne pas avoir lu ton code car je ne m'y retrouve absolument pas mais au lieu d'utiliser rand() tu devrais plutot utiliser :

    md5(uniqid(microtime() * 100000), true);

  3. #3
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    J'ai lu 1/3 de ton code , je comprend pas se que tu fait ( tu arrére ton php , tu écrit 1 phrase ...... et tu continu ton php .. )

    Puis l'encodage en md5 est mieu , ( sinon compteur et s'est valider ..... )

    >> S'est se que j'ai fait aussi ...

Discussions similaires

  1. Validation par mail d'un avis client
    Par synolog dans le forum Langage
    Réponses: 7
    Dernier message: 01/05/2012, 14h24
  2. Récupérer par mail les infos d'un formulaire
    Par pointup dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 04/08/2009, 16h09
  3. Réponses: 7
    Dernier message: 11/06/2009, 14h28
  4. Réponses: 2
    Dernier message: 06/01/2007, 11h37
  5. Recevoir par mail une info d'un formulaire
    Par nypahe dans le forum WebDev
    Réponses: 1
    Dernier message: 20/12/2006, 13h12

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