inscription(espace membre)

Eléphanteau du PHP | 47 Messages

11 nov. 2005, 22:36

bonjour voila j'ai un problème dans la programmation de l'inscription pour mon espace membre.
Rien ce s'inscrit dans ma table sql
Aucun message d'erreur (que j'ai programmer) ne s'affiche et aucun message d'erreur du serveur n'est afficher!
Le 1er formulaire est celui qui revient tout le temps. Le deuxieme est celui ou le membre doit confirmer son inscription.Je vous met ton mon script car je c'est pas du tout ou est mon erreur.
J'ai aussi un probleme dans la case année car il n'y a que le 1 et le 1906 qui si affiche alor que je veut les dates des 100derniers années.
<?
if ((isset($_POST['pseudo']))) 
{
    if ($_POST['pseudo'] != NULL AND $_POST['sexe'] != NULL AND $_POST['date'] != NULL AND $_POST['email'] != NULL ) 
    {
     if (preg_match("!^[-a-z0-9_.]+@[-a-z0-9_.]+.[a-z]{2,4}$!",$_POST['email']) == 1)
    {

        
        mysql_connect("localhost", "", "");
        mysql_select_db("");
    
        $message = htmlentities ($_POST['message']);
        $sexe = htmlentities ($_POST['sexe']);
        $jours = htmlentities ($_POST['jours']);
        $mois = htmlentities ($_POST['mois']);
        $année = htmlentities ($_POST['année']);
        $email = htmlentities ($_POST['email']);
        $signature = htmlentities ($_POST['signature']);
        $temps = time();
        $validiter=non;
        $motdepasse= rand (1,99999);
        // Ensuite on enregistre le message
        mysql_query("INSERT INTO membre(pseudo, nom, prenom,sexe, email, jour, signature, mois, annee, temps, valider, motdepasse) VALUES('', '$pseudo', '$nom', '$prenom', '$sexe', '$email', '$jour', '$signature', '$mois', '$année', '$temps', '$validiter', '$motdepasse' )");
    
        // On se déconnecte de MySQL
        mysql_close();
        echo "Un Message vient de vous être envoyer à ".$_POST['email']."<br>";
        mail($_POST['email'],"Validation d'inscription sur la communauté LOVE METAL","Bonjour,/r je vous envoie cette Email pour te donnée ton mot de passe de base et le pseudo que tu as enregistré à l'adresse suivante http://guismoman33.free.fr/HIM/index.php?page==inscription . Vous avez 24h pour valider votre inscription à l'adresse suivante : http://guismoman33.free.fr/HIM/index.php?page==validation. Mon but est de créer une communauté : la communauté LOVE METAL. Je vous remercie d'y participer. /r Ton pseudo : '.$pseudo.' /r Mot de passe : '.$motdepasse.'/r Merci /r guismoman33 webmaster de la communauté love metal");
        $temoin = "temoin";
    }
    else
    {
    echo "Votre E-mail n'est pas valable";
    }}
    else
    {
    ?>Les champs munies d'une <font color="#FF0000">* </font> sont obligatoire voyez remplir tous les champs<?
    }
    
}

if (empty($temoin))
{
?>
Bienvenue dans la partie membre cette partie sera très utile au utilisateur
régulier et permettrons par la suite d'avoir dans partie consacrée juste pour
eux! Des vidéos, des photos juste pour les inscrits! Par la suite j'aimerai que
quelques modules se mettent en place! 
<br>En vous inscrivant je pourrai vous
contactez lorsqu'il y aura de nouvelle rubrique sur le site.
<br>Pour vous inscrire rien de plus simple, remplissez le formulaire suivant.
Toutes les informations que vous insérerez pourront être modifier dans votre
espace membre.
<br>Les indications avec <font color="#FF0000">* </font>seront
obligatoire.
<table border="1" width="50%" bordercolor="#FF66CC" cellspacing="0" cellpadding="0"><tr>
    <td width="50%">Pseudo <font color="#FF0000">* </font>:</td>
    <td width="50%">
    <form method="post" action="index.php?page=inscription">
    <center>
    <input type="text" name="pseudo" /></center>
    </td>
  </tr>
  <tr>
    <td width="50%">Prénom :</td>
    <td width="50%">
    <center>
    <input type="text" name="prenom" />
    </center>
    </td>
  </tr>
  <tr>
    <td width="50%">Nom :</td>
    <td width="50%">
    <center>
    <input type="text" name="nom" /></center>
    </td>
  </tr>
  <tr>
    <td width="50%">Date de naissance (jj/mm/aaaa)<font color="#FF0000">* </font> : </td>
    <td width="50%">
    <select name="jour">
  <option value="">Jour</option">
  <option value="">-----</option">
  <?php $plus = 1; while ($plus != "32")
                              {
                              echo "<option value=\"".$plus."\">".$plus."</option>";
                              $plus = $plus + 1;
                              }
  ?>
  </select>
    <select name="mois">
  <option value="">Mois</option">
  <option value="">-----</option">
  <?php $plus = 1; while ($plus != "13")
                              {
                              echo "<option value=\"".$plus."\">".$plus."</option>";
                              $plus = $plus + 1;
                              }
  ?>
  </select>
      <select name="annee">
  <option value="">Année</option">
  <option value="">-----</option">
  <?php $ans = date('Y'); $plus = 1; while ($plus <= $ans)
                              {
                              echo "<option value=\"".$plus."\">".$plus."</option>";
                              $plus = $plus + $ans - 100;
                              }
  ?>
  </select>
    </td>
  </tr>
      <td width="50%">Sexe <font color="#FF0000">* </font>:</td>
    <td width="50%">
    <input type="radio" name="sexe" value="féminin" checked="checked" /> Féminin
    <input type="radio" name="sexe" value="masculin" /> Masculin</td>
  <tr>
    <td width="50%">Adresse E-mail <font color="#FF0000">* </font>: </td>
    <td width="50%"><input type="text" name="email" /></center></td>
  </tr>
  <tr>
    <td width="50%">Ville~Département~Pays</td>
    <td width="50%">
    <input type="text" name="ville" /><br>
    <input type="text" name="departement" /><br>
    <input type="text" name="pays" />
    </td>
  </tr>
  <tr>
    <td width="50%">Signature : </td>
    <td width="50%">
    <input type="text" name="signature" />
    </td>
  </tr>
</table>
<input type="submit" value="S'inscrire" />
<?
}

if (isset($temoin))
{
$pseudo = htmlentities ($_POST['pseudo']);
$confirmation = htmlentities ($_POST['confirmation']);
$nouveau = htmlentities ($_POST['nouveau']);
$motdepasse2 = htmlentities ($_POST['motdepasse2']);
$change = htmlentities ($_POST['change']);
$donnée = mysql_query("SELECT * FROM membre");
$donnée = mysql_fetch_array($donnée);
$pseuso2=$donnée['pseudo'];
$email=$donnée['email'];
$motdepasse=$donnée['motdepasse'];
if($change=NULL)
{
if ((isset($_POST['pseudo'])) AND (isset($_POST['motdepasse2']))) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['motdepasse2']!=NULL ) 
    {
if ($pseudo==$pseudo2 AND $motdepasse==$motdepasse2)
{
$données2= mysql_query("UPDATE membre SET valider='oui' WHERE pseudo='$pseudo'");
$temoin2 = "temoin2";
}
}
}

elseif ($change="on")
{
if ((isset($_POST['pseudo'])) AND (isset($_POST['motdepasse2'])) AND (isset($_POST['confirmation'])) AND (isset($_POST['nouveau']))) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['motdepasse2']!=NULL AND $_POST['confirmation']!=NULL AND $_POST['nouveau']!=NULL) 
{
if  ($motdepasse==$motdepasse2 AND $pseudo==$pseudo2 AND $nouveau==$confirmation)
{
$données2= mysql_query("UPDATE membre SET valider='oui', motdepasse='$nouveau' WHERE pseudo='$pseudo'");
$temoin2 = "temoin2";
}
else {echo "Votre mot de passe ou votre pseudo n'est pas valide.";}
}
else {echo "Vous n'avez pas rempli toutes les informations demandées.";}
}
else {echo "Vous n'avez pas donné toutes les informations.";}
}
if (empty($temoin2))
{
?>
Un Email vous a été envoyé sur votre boîte à l'adresse : <? $email ?>.
<table border="1" width="50%" bordercolor="#FF66CC" cellspacing="0" cellpadding="0"><tr>
    <td width="50%">Pseudo <font color="#FF0000">* </font>:</td>
    <td width="50%">
    <form method="post" action="validation.php">
    <center>
    <input type="text" name="pseudo" /></center>
    </td>
  </tr>
  <tr>
    <td width="50%">Mot de passe aléatoire (celui donné dans le mail) <font color="#FF0000">* </font>:</td>
    <td width="50%">
    <center>
    <input type="text" name="motdepasse2" /></center>
    </td>
</tr>
  <tr>
    <td width="50%">Voulez-vous changez votre mot de passe? <font color="#FF0000">* </font>:</td>
    <td width="50%">
    <center>
    <input type="checkbox" name="change" />
</center>
    </td>
</tr>
  <tr>
    <td width="50%">Nouveau mot de passe<font color="#FF0000">* </font>:</td>
    <td width="50%">
    <center>
    <input type="text" name="nouveau" /></center>
    </td>
  </tr>
  <tr>
    <td width="50%">Confirmer votre nouveau mot de passe <font color="#FF0000">* </font>:</td>
    <td width="50%">
    <center>
    <input type="text" name="confirmation" /></center>
    </td>
  </tr>
  </form>
  </table>
  <?
  }
  else
  {
  ?> "Votre confirmation a bien été pris en compte. <a href=index.php>Revenir à l'entrée du site.</a>
  <?
  }
  }
  }
  ?>
hIm It'S good music

Mammouth du PHP | 19672 Messages

11 nov. 2005, 23:04

Si tu n'as pas un de tes messages d'erreur personnalisé, c'est que là où ça plante, c'est un endroit où l'alternative n'est pas prévue et ne comporte pas de message : Exemple:
tu as dans ton code la ligne:
if($change=NULL)
//...
à ce if() ne correspond aucun else, tu n'as donc rien qui matérialise l'alternative si la condition est fausse.
Mais en remontant un peu plus loin, tu as la même chose avec:
if (isset($temoin))
Pas de else non plus, ne serait-ce que pour la pahse de débuggage: comment pourrais-tu alors savoir si c'est à cet endroit ou à l'autre que ça ne fonctionne pas ?

Quand tu as un doute, ajoute systématiquement un else avec un message et remonte jusqu'à l'erreur en sachant que si tu arrives à un endroit où ça marche bien, c'est que tu es remonté un cran trop loin et que l'erreur est juste à coté. Et fais afficher tes variables au besoin, c'est parfois fort instructif.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

11 nov. 2005, 23:15

de plus les tests IF se font avec "==" et non" =" :wink:

et en ce qui concerne la liste de date:
une boucle for est beaucoup plus adaptée a ce que tu veut faire. Tu connais le début et la fin de la boucle:
<?
 $ans = date('Y'); 
 
 for($i=1; $i<=100 ; $i++)
    {
        echo "<option value=\"".$ans."\">".$ans."</option>";
		$ans--;
    }		
?>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
fab
ViPHP | 2657 Messages

12 nov. 2005, 03:15

un for n'est que le camouflage d'un while :p
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphanteau du PHP | 47 Messages

12 nov. 2005, 13:37

ba si j'ai des else et il marche pas je comprend vraiment pas pourquoi.Et aucune donnée n'est écrite dans ma base de donnée et je comprend pas pourquoi non plus ma boucle ne marche pas.
Pour voir ce que donne ce script allez voir là:
http://guismoman33.free.fr/HIM/index.ph ... nscription
hIm It'S good music