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

EDI, CMS, Outils, Scripts et API PHP Discussion :

valider un formulaire par mail


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre confirmé
    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
    Par défaut valider un formulaire par mail
    bonjours

    j'ai un formulaire d'inscription,

    je rentre le pseudo
    mots de passe
    verif mot de passe
    mail.
    ce rentre dans la base compte procisoir

    j'envoie un mail au client pour qu'il clique sur un lien pour validers sont inscription
    donc ca valide l inscrition, et en meme temps transfere vers la table compte definiif et suprime la ligne ligne provisoir

    ce qui ne marche pas c'est que losque l'on clique sur le lien que l on envoie par mal ca ne valide rien..
    je donne mon code pour m'expliquer ce qui ne va pas dans la code
    merci


    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
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
     
     
     
     
    <?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
     
    $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?&amp;pseudo=$pseudo&amp;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
    }
    }
     
    ?>
     
    <form action="inscription.php" method="post">
    <fieldset>
    <legend>Infos obligatoires</legend>
    <table>
    <tr>
    <td>Pseudo :</td>
    <td><input type="text" name="pseudo" size="20" /></td>
    </tr>
    <tr>
    <td>Mot de passe :</td>
    <td><input type="password" name="password" size="20" /></td>
    </tr>
    <tr>
    <td>Confirmer le mot de passe :</td>
    <td><input type="password" name="confirm_password" size="20"/></td>
    </tr>
    <tr>
    <td>Mail :</td>
    <td><input type="text" name="mail" size="30" /></td>
    </tr>
    <tr>
    <td colspan="2">
    <textarea name="CGV" cols="57" rows="8" id="CGV">
    Conditions d'utilisation du service
    Par l'intermédiaire du site web, l'utilisateur peut déposer des annonces de gardes d’enfants. 
    Il appartient à l'utilisateur, qu'il soit une personne à la recherche de solution de garde d’enfants ou personne proposant des services de gardes, de déterminer, les modalités de la garde des enfants, ainsi que celles des rémunérations dues et de procéder aux vérifications nécessaires concernant l'identité et la qualité de ses interlocuteurs. 
    L’utilisateur qui dépose un message  sur le service doit être conscient du caractère public des informations qu'il délivre et notamment que la divulgation d'informations telles que le numéro de téléphone, l’adresse personnelle peuvent engendrer des malversations à son insu. 
    L'utilisateur s'engage à fournir des informations exactes et complètes ; il s'engage notamment à ne pas créer une fausse identité de nature à induire les tiers en erreur. 
    allomamannonou se réserve le droit de supprimer à tout moment tout message que nous estimons contraire à la réglementation en vigueur, à l'objet du service. 
    allomamannonou ne donne aucune garantie d'aucune sorte en ce qui concerne la teneur des messages, notamment l'exactitude ou la fiabilité des informations qui y figurent, et la qualité des personnes, produits, services ou informations, quels qu'ils soient, présentés, obtenus ou contacté par le biais d'un message. 
    Notre société décline toute responsabilité concernant les message déposés sur le service. L'utilisation du service se fait sous la seule responsabilité de ses utilisateurs qui assument la totalité des risques pouvant en découler. 
    Il appartient à l'utilisateur de procéder aux vérifications nécessaires concernant l'identité et la qualité de ses interlocuteurs.</textarea>	  </td>
    </tr>
    </table>
    <input type="checkbox" name="conditions"/>
    J'ai lu et j'accepte les conditions générales d'utilisation d'allomamannounou .<br/>
    <input type="checkbox" name="newsletter" checked="checked"/>
    Je souhaite recevoir la newletter dans ma boite mail . <br/>
    </fieldset>
    <input type="submit" value="Valider"/>
    </form>

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonsoir,

    Les données sont bien dans la table provisoire d'après ce que tu dis.

    Lors de l'appel à la page avec le bon lien, rien ne se passe, ou bien tu as un de tes messages.

    Edit : Les données sont-elles effacées de la table temporaire

    Je n'ai pas parcouru tout ton code car celui-ci est un peu indigeste avec tous ces if avec du html dedans, pense à séparer un peu le code de l'affichage, car là

  3. #3
    Membre confirmé
    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
    Par défaut valid inscription
    oui, ca va en premier dans la table provisoir, et quand on clique sur le mail ca va dans la table definitif

    et je n'ai aucun message d'erreur

    http://allomamannounou.free.fr/servi...lef=1954425719

    pour le mmt c toujours en phase test car je suis encore un grand debutant en programation donc il est vrai que je vais séparé le code HTML et PHP par la suite

  4. #4
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Il faudrait que tu rajoutes qqs traces dans le programme pour voir ce que celui-ci fait

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (isset($_GET['pseudo']) && isset($_GET['clef'])) {
    echo 'Début de la validation';
    et afficher toutes les requetes avec
    Cela te permettra de savoir ou ca bloque et surtout le cheminement dans le progamme. C'est du debogage à l'ancienne, mais pour le web ca va plus vite

  5. #5
    Membre confirmé
    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
    Par défaut
    je vient de voir que la cef de la table est diferente que celle que j envoie par mail

    es-normal
    avec la fonction RAND()

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Dans ton code tu utilise correctement la fonction et tu attribue la valeur à une variable que tu insère en base et dans le mail. La clé doit être la meme, et cela ne doit pas etre autrement ( au vu de ton code )

    Aucun problème à ce niveau là en tout cas.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Sur mon site j'ai fait le système de vérification complètement différent et plus simple avec une seule table donc pas de données temporaires à copier puis effacer... tout ça c'est lourd et difficile à gérer.

    Tu devrais donc créer une seule table pour tes membres, y inscrire bien sûr les données du formulaire et ajouter un champ "clé" (char) et un champ "activé" (tinyint(1)).

    Par défaut tu passes la "clé" et activé à 0 dans les champs appropriés.

    Ensuite, lors de la vérification, si la clé et le nom de membre coïncident tu passes activé à 1 et le compte est vérifié.

    Ensuite tu autorises l'authentification des membres dont le champ activé est à 1.

    Qu'en penses-tu?

    webrider

  8. #8
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Les deux systèmes se valent. L'avantage de la table temporaire c'est que lors de l'identification d'un membre, le suivi des membres, etc .., la table est moins volumineuse car ell ne contient que les vrais membres.

    De toute facon, je ne pense pas que son problème viennent de l'utilisation de plusieurs tables mais plutôt du déroulement de son script

    On va attendre qu'il nous parle des t-races qu'il a mis en place

    Pierre

Discussions similaires

  1. [Mail] problème d'envoi de formulaire par mail
    Par alpking dans le forum Langage
    Réponses: 2
    Dernier message: 13/07/2006, 19h12
  2. [W3C] valider un formulaire par W3C
    Par 18Marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/06/2006, 19h04
  3. Valider un formulaire par un lien et non par un bouton
    Par budiste dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 11h58
  4. [Mail] Problème envoi formulaire par mail
    Par Nicos77 dans le forum Langage
    Réponses: 5
    Dernier message: 10/11/2005, 17h11
  5. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50

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