JeuWeb - Crée ton jeu par navigateur
formulaire d'incription : probleme - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : formulaire d'incription : probleme (/showthread.php?tid=1795)

Pages : 1 2 3


formulaire d'incription : probleme - fenix - 23-09-2007

bonjour a tous,

voila j'ai ce script d'inscription

Code :
<?php

                                                        //--------------------------------------------------------------------------------
                                                        // INSCRIPTION ET VALIDATAION DE COMPTE PAR MAIL
                                                        
                                                        //  ------------------------------------------------------------------------------

//--------------------------------------------
// 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']))
    {        
     ?><p>Champs non remplis<br/></p><?
     $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))
    {
     ?><p>Caractères non autorisés pour le pseudo<br/></p><?
     $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 ))    
    {
     ?><p>Caractères non autorisés pour le mot de passe<br/></p><?
     $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)
    {
     ?><p>Mauvais pass<br/></p><?
     $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'])
        {
         ?><p>Ce pseudo existe déja sur ce site<br/></p><?
         $nb_faux++;
        }
    }
    
    //  incrémenter la variable $nb_faux si la case à cocher "conditions"  est null        
    if (isset($_POST['conditions']) == null)
    {
     ?><p>Conditions non coché<br/></p><?
     $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";
    }
    
    if (isset($_POST['territoire_de_depart']) || isset($_POST['classe_de_guerrier']) || isset($_POST['sexe']) || isset($_POST['jours'])
    || isset($_POST['mois']) || isset($_POST['annees']))
    {  
     $pays = $_POST['territoire_de_depart'];
     $ville = $_POST['classe_de_guerrier'];
     $sexe = $_POST['sexe'];
     $date_naissance = ($_POST['jours']) ."/". ($_POST['mois']) ."/". ($_POST['annees']);
    }
  
    // 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', '$pays', '$ville', '$sexe', '$date_naissance', '$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)
        {
         ?><p>Vous allez reçevoir un mail pour la validation de votre compte<br/></p><?
        
         $mail_destinataire =htmlentities ($_POST['mail']);            
         $sujet = "jeu, validation de l'inscription";
         $message = "Cet email a été envoyé à partir de http://www.fenix29.ifrance.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://127.0.0.1/Codes/inscription.php?&pseudo=$pseudo&clef=$clef
                     Le Webmaster";
         $head = "Salut $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, territoire_de_depart, classe_de_guerrier, sexe, date_naissance 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'];
     $pays = $donnees['territoire_de_depart'];
     $ville = $donnees['classe_de_guerrier'];
     $sexe = $donnees['sexe'];
     $date_naissance = $donnees['date_naissance'];
    
     // requette transferer les données de la table "comptes_provisoirs" à la table "comptes_definitifs"
     $requete = "INSERT INTO $table_cd VALUES('',  '$pseudo', '$password', '$mail', '$newsletter', '$pays', '$ville', '$sexe', '$date_naissance')";
     $resultat = mysql_query($requete) or die('<br/>3 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);
     ?><p>Votre compte est validé<br/></p><?
    }
    else
    {
     ?><p>Votre compte est deja validé ou le lien de validation est incorrect<br/></p><?
    }
}

?>

<link rel="stylesheet" media="screen" type="text/css" title="index" href="includes.css" />

<form action="formulaire.php" method="post">

<p>Inscription :</p>

<fieldset>
     <legend><p>Infos obligatoires</p></legend>
    
     <table>
         <tr><td><p>Pseudo :</p></td><td><input type="text" name="pseudo"/ size="9"></td></tr>
         <tr><td><p>Mot de passe :</p></td><td><input type="password" name="password" size="9"/></td></tr>
         <tr><td><p>Confirmer le mot de passe :</p></td><td><input type="password" name="confirm_password" size="9"/></td></tr>
         <tr><td><p>Mail :</p></td><td><input type="text" name="mail"/ size="15"></td></tr>
         <tr><td><p>territoire de depart :</p><br /> <select name="territoire_de_depart"><br />
    <option value="foret">foret</option>
    <option value="desert">desert</option>
    <option value="montagne">montagne</option>
    <option value="banquise">banquise</option></select></td></tr>
    <tr><td><p>classe de guerrier : rendez vous <a href="classe.php">ici</A> <br/>pour avoir des info sur les diferentes classes</p><br /> <select name="classe_de_guerrier"><br />
<option value="geisha">geisha</option>
<option value="samouraï">samouraï</option>
<option value="gardien_de_lyoko">gardien de lyoko</option>
<option value="félin">félin</option>
</select></td></tr>
     </table>
     <input type="checkbox" name="conditions"/> <p>J'ai lu et j'accepte les conditions générales d'utilisation de code lyoko aventure <br/>(indisponible pour le moment) .</p><br/>
     <input type="checkbox" name="newsletter" checked="checked"/> <p>Je souhaite recevoir la newletter dans ma boite mail .</p>
</fieldset>

<fieldset>
     <legend><p>Infos personelles</p></legend>
     <table>
    
     <p>Date de naissance :</p> <select name="jours">
                         <option></option><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="O4">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
                         </select> /
                         <select name="mois">
                         <option></option><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="O4">04</option><option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option><option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
                         </select> /
                         <select name="annees">
                         <option></option><option value="1987" >1987</option><option value="1986" >1986</option><option value="1985" >1985</option><option value="1984" >1984</option><option value="1983" >1983</option><option value="1982" >1982</option><option value="1981" >1981</option><option value="1980" >1980</option><option value="1979" >1979</option><option value="1978" >1978</option><option value="1977" >1977</option><option value="1976" >1976</option><option value="1975" >1975</option><option value="1974" >1974</option><option value="1973" >1973</option><option value="1972" >1972</option><option value="1971" >1971</option><option value="1970" >1970</option><option value="1969" >1969</option><option value="1968" >1968</option><option value="1967" >1967</option><option value="1966" >1966</option><option value="1965" >1965</option><option value="1964" >1964</option><option value="1963" >1963</option><option value="1962" >1962</option><option value="1961" >1961</option><option value="1960" >1960</option><option value="1959" >1959</option><option value="1958" >1958</option><option value="1957" >1957</option><option value="1956" >1956</option><option value="1955" >1955</option><option value="1954" >1954</option><option value="1953" >1953</option><option value="1952" >1952</option><option value="1951" >1951</option><option value="1950" >1950</option><option value="1949" >1949</option><option value="1948" >1948</option><option value="1947" >1947</option><option value="1946" >1946</option><option value="1945" >1945</option><option value="1944" >1944</option><option value="1943" >1943</option><option value="1942" >1942</option><option value="1941" >1941</option><option value="1940" >1940</option><option value="1939" >1939</option><option value="1938" >1938</option><option value="1937" >1937</option><option value="1936" >1936</option><option value="1935" >1935</option>
                         </select></td></tr>
     </table>
</fieldset>

<input type="submit" value="Valider"/>



</form>



[/code]

mais le gros probleme c'est que quand je le teste je ne reçois pas l'email si quelqu'un pouvait m'aider tout marche sauf sa


RE: formulaire d'incription : probleme - leni - 23-09-2007

vives code sources ! mdr ne me dis pas que tu as creer se code, je te prendrai pour un menteur Wink

http://www.phpcs.com/codes/INSCRIPTION-VALIDATION-COMPTE-MAIL_35179.aspx

Si je peu me permettre un conseil, oublie se code, il est nul... En revanvhe, tu peu t'en inspierer pour fair ton procpre code Wink

voici la list de tout se qui va pas :
-aucune securitée au niveau du mdp voici comment tu devrai fair :

$password2 = $_POST['password']; // tu comprendra pourquoi après
$pseudo = addslashes(htmlspecialchars($_POST['pseudo'], ENT_NOQUOTES));
$password = md5($_POST['password']); // le mdp est hacher, et devient indecriptable, ou presque.
$confirm_password = md5($_POST['confirm_password']);
$mail = addslashes(htmlspecialchars($_POST['mail'], ENT_NOQUOTES));
$pseudo=ucwords(strtolower($pseudo));

- le mail marche pas, j'ai psa regarder, mais en voici un qui marche :

$mail_destinataire = $_POST['mail'];
$sujet = "Inscription � Crusades and Conquests";
$message = "Bienvenue dans le monde de Crusades and Conquests !

Merci de vous etre inscrit, voici les informations personelles de votre compte :

Pseudo: $pseudo \n
Mot de passe: $password2 \n // l'interet de password 2 : il n'as pas été hacher par md5
Adresse mail permanente (vous ne pourrez changer de mot de passe qu'� partir de cette adresse): $mail \n

Merci de valider votre inscription en cliquant sur le lien suivant:

http://www.crusades.fr/confirmation.php?pseudo=$pseudo&&clef=$clef


Si vous n'avez pas souhait� cr�er un compte sur Crusades and Conquests , ignorez ce message.

Bon jeu, l'equipe de crusades";

$head = "From: <inscription@crusades.fr>\n";
$head = "Bonjour, $pseudo ";
mail($mail_destinataire, $sujet, $message, $head);

pas de br, mais des \n

- decoupe ton code sur 2 pages : une pour l'inscription, l'autre pour la confirmation

- l'include pcbd est pas du tout securisée, il faudra que tu fasse un system un peu plus serieu (fair un dossier include sur ton ftp, et mettre un htacess, tout les details sont sur el site du zero)


voila, je crois que j'ai faait le tour Wink bon code Smile


RE: formulaire d'incription : probleme - fenix - 23-09-2007

merci je vai essaier sa
sin il etait pourtant bien noter se code ^^

encore merci


RE: formulaire d'incription : probleme - kukursale - 23-09-2007

Hmm, je pense que ton probleme vient du fait que tu teste si "$resultat == true" , OR mysql_query ne renvoie que FALSE si il y a eu une erreur, sinon si tout se passe bien il renvoie juste le resultat de ta requete.

Donc, essaye de modifier par if($resultat != FALSE) ....

Ou alors essaye sans le test la pour voir si ca vient vraiment de ca,

Voila a +

EDIT : Lol j'ai repondu tro tard mais tout ce qu'a dit leni est vrai aussi, mais par contre j'ai testé son mail, il marche donc ca doit pas venir de ca je pense


RE: formulaire d'incription : probleme - fenix - 23-09-2007

marche toujours pas c'est peu etre parse que je me sert d'une adresse msn


RE: formulaire d'incription : probleme - leni - 23-09-2007

non, j'ai le même sistem Wink

copie mon code en le mettant a ton gout Wink si sa marche pas, c'est que tu 'nest pas autoriser a envoyer de mail Wink

je vais surment dire un truc tt con, mais sa me tracasse ... test tu a partir de ton ftp, ou de easy php ?
si c'est a partir de easy php, c'est normal que tu recoive rien Wink


RE: formulaire d'incription : probleme - Kalan - 23-09-2007

Citation :$head = "From: <inscription@crusades.fr>\n";
$head = "Bonjour, $pseudo ";
Je maîtrise pas bien les envois de mail. C'est volontaire ici (genre un Add implicite) ou tu as oublié le += ?
Ca donne quoi "Bonjour, $pseudo" dans le header d'un mail ? C'est équivalent au Subject ?

Merci


RE: formulaire d'incription : probleme - fenix - 24-09-2007

je fait a partir de mon ftp
sin je sui cher Ifrance c pe eux je sai que c'est pas mal beuger


RE: formulaire d'incription : probleme - Kalan - 24-09-2007

fenix a écrit :je fait a partir de mon ftp
sin je sui cher Ifrance c pe eux je sai que c'est pas mal beuger

Pardon, je ne comprends pas ce que tu écris... :heu:
Peux-tu reformuler en français et de manière précise ?


RE: formulaire d'incription : probleme - Aro - 24-09-2007

Alors, traduction de Fenix:
Je ne teste pas mes pages en local mais j'ai un espace web chez Ifrance et c'est à partir de là que je teste!

Réponse à Fenix:
Ce n'est pas un "beug" la fonction mail() est desactivée sur les serveurs gratuits de Ifrance pour cause de spamming par le passé. Tu devras t'en passer chez Ifrance ou payer...

Pour Kalan:
Un petit tuto sur la fonction mail() Wink