Inscription php espace membre

Bonjour,

Voici mon code qui agit lorsque que je clique sur le bouton valider.

<?php

//Page du haut
include("sources/haut.php");

//Fichier necessaire
include("sources/config.php");

// Verifie si on peut se connecter a la base sql
$connect=mysql_connect($host,$user,$pass) or die ("Impossible de se connecter");
mysql_select_db($base, $connect) or die ("Impossible de selectionner la base de donnees");

//Configure les dates et les heures
$date= date("Y-m-d");
$heure= date("H:i:s");
$quipass= date("Y-m-d");
$heurepass= date("H:i:s");

//Verification des differents champs
$inscr=0;

//Verifie si l'email est correct
function EmailOK($mail) {return( ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_'a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_'a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_'a-z{|}~]+$',$mail) );}
if (EmailOK($email)) {$inscr=0;}
else {$inscr=1;
echo ("<center><br><font face=\"<? echo $font; ?>\" size=\"$size\"><b>Votre email est incorrect.</b></font><br>");}

//Verifie que tous les champs obligatoires ont été rempli
if ((!$nom)||(!$email)||(!$pass1)||(!$pass2)){
echo ("<center><br><font face=\"<? echo $font; ?>\" size=\"$size\"><b>Un ou pluiseurs champs obligatoire n'ont pas été rempli.</b></font><br>");
$inscr=1;}

//Verifie si le mot de passe et sa confirmation est equivalent
if ($pass1!=$pass2){
echo ("<center><br><font face=\"<? echo $font; ?>\" size=\"$size\"><b>Le mot de passe ne correspond pas à la confirmation.</b></font><br>");
$inscr=1;}

//Recupere le nombre de messages au total
$result=mysql_query ("SELECT * FROM comptes WHERE nom='$nom'") or die ("Requete impossible");
$exnom = mysql_num_rows($result);
if ($exnom!=0){
echo ("<center><br><font face=\"<? echo $font; ?>\" size=\"$size\"><b>Votre nom est deja pris.</b></font><br>");
$inscr=1;}

//Cryptage du mot de passe
$pass1=md5($pass1);

//Enregistrement des donnees dans la base de donnees
if ($inscr==0){
$query ="insert into comptes (nom, pass, email, site, localite, date, heure, quipass, heurepass) values('$nom', '$pass1', '$email', '$site', '$localite', '$date', '$heure', '$quipass', '$heurepass')";
echo ("<center><br><font face=\"<? echo $font; ?>\" size=\"$size\"><b>Votre inscription a réussi.</b></font><br>");
echo ("<font face=\"<? echo $font; ?>\" size=\"$size\">Veuillez-vous connecter pour accéder à l'espace membre.</font><br><br>");
echo ("<a href=\"index.php\"><font face=\"<? echo $font; ?>\" size=\"$size\">Se connecter</font></a><br></center>");}
//si il y a une erreur
else {echo ("<center><br><font face=\"<? echo $font; ?>\" size=\"$size\"><b>Veuillez recommencer votre inscription.</b></font><br><br>");
echo ("<a href=\"inscription.php\"><font face=\"<? echo $font; ?>\" size=\"$size\">Inscription</font></a><br></center>");}

mysql_query($query, $connect);
mysql_free_result($result);
mysql_close($connect);

//Page du bas
include("sources/bas.php");
?>

Et voici ce qu'il m'affiche quand je valide l'inscription alors que je remplit les champs correctement.

voyez vous une erreur ?

Merci

14 réponses

  1. le problème viendrai d'ici apparemment :

    //Verifie si on s'est connecte a l'espace membre
    $connom=$HTTP_COOKIE_VARS["espace_login"];
    $conpass=md5($HTTP_COOKIE_VARS["espace_pass"]);
    $result=mysql_query ("SELECT * FROM comptes WHERE nom='$connom' and pass='$conpass'") or die ("Requete impossible");
    $autoconnect = mysql_num_rows($result);
    if ($autoconnect==0) {
    echo("<script language=\"javascript\">location=\"erreur.php\";</script>");}

    il me renvoi sur la page erreur.php alors qu'il ne devrait pas
    1. je viens de vérifier l'utilisateur est bien inscrit dans la bd.

      le problème doit venir d'ailleur ça me renvoi sur la page erreur.php :

      Message d'erreur :

      ///////
      Erreur

      Vous n'etes pas autorisé à accéder à cette page.
      Pour accéder à cette page, vous devez être membre : S'inscrire.
      ///////

      page index.php

      <?php

      //Page du haut
      include("sources/haut.php");

      //Fichier necessaire
      include("sources/config.php");
      ?>

      <form method="post" action="validcon.php">
      <table width="350" border="0" align="center" bgcolor="<? echo $colp;?>">
      <tr>
      <td>
      <table width="100%" border="0">
      <tr bgcolor="<? echo $cols;?>">
      <td>
      <div align="center"><font face="<? echo $font; ?>" size="<? echo $size; ?>"><b><font color="#FFFFFF">Connexion
      à l'espace membres</font></b></font></div>
      </td>
      </tr>
      </table>
      <table width="100%" border="0" align="center">
      <tr>
      <td width="32%"><font face="<? echo $font; ?>" size="<? echo $size; ?>"><b>Nom
      :</b></font></td>
      <td width="68%">
      <input type="text" name="connom">
      </td>
      </tr>
      <tr>
      <td width="40%"><font face="Arial"><b><font face="<? echo $font; ?>" size="<? echo $size; ?>">Mot
      de passe :</font></b></font></td>
      <td width="68%">
      <input type="password" name="conpass">
      </td>
      </tr>
      </table>
      <table width="100%" border="0">
      <tr>
      <td>
      <center><input type="submit" name="Submit" value="Valider"></center>
      </td>
      </tr>
      </table>
      </td>
      </tr>
      </table>
      </form>

      <center><font face="Arial" size="<? echo $size; ?>">Vous n'êtes pas encore inscrit ? </font>
      <a href="inscription.php"><font face="Arial" size="<? echo $size; ?>">Inscription</font></a></center>
      <center><font face="Arial" size="<? echo $size; ?>">Vous n'arrivez pas à vous connecter ? </font>
      <a href="aidecon.php"><font face="Arial" size="<? echo $size; ?>">Aide</font></a></center>
      <?php

      //Page du bas
      include("sources/bas.php");
      ?>

      page erreur.php

      <?php

      //Cookies
      Setcookie("espace_login");
      Setcookie("espace_pass");

      //Page du haut
      include("sources/haut.php");

      //Fichier necessaire
      include("sources/config.php");
      ?>
      <br><br><center><font face="<? echo $font; ?>" size="<? echo $size; ?>"><b>Erreur</b><br><br>Vous n'etes pas autorisé à accéder à cette page.</font><br>
      <font face="<? echo $font; ?>" size="<? echo $size; ?>">Pour accéder à cette page, vous devez être membre : <a href="inscription.php">S'inscrire</a>.</font></center>

      <?php

      //Page du bas
      include("sources/bas.php");
      ?>
      1. Vérifie si l'utilisateur que tu viens de créer est bien inscrit dans la bd.
        Vérifie que lorsque tu fais la vérification entre le nom que tu inscrit dans le form de connexion est le meme que celui inscrit dans la bd
        fait la meme chose pour le password
        1. problème résolu pour l'inscription :

          ///////////////
          Votre inscription a réussi.
          Veuillez-vous connecter pour accéder à l'espace membre.
          //////////////

          maintenant problème pour la connexion :

          ///////////
          Erreur

          Vous n'etes pas autorisé à accéder à cette page.
          Votre authentification n'a pas été effectué.

          Pour accéder à cette page, vous devez être membre : S'inscrire.
          ////////////
          1. il y a du mieux j'ai résolu le problème de l'email.

            Me reste ceci maintenant :

            //////////
            Un ou plusieurs champs obligatoire n'ont pas été rempli.

            Veuillez recommencer votre inscription.
            /////////

            faut-il faire la meme chose?
            1. je ne voit pas ou introduire ce bout de code :
              $email = htmlspecialchars($_POST['mail']);

              je te redonne mon code du formulaire d'inscription :

              <?php

              //Page du haut
              include("sources/haut.php");

              //Fichier necessaire
              include("sources/config.php");
              ?>

              <form method="post" action="validinscript.php">
              <table width="400" border="0" align="center" bgcolor="<? echo $colp;?>">
              <tr>
              <td>
              <table width="100%" border="0">
              <tr bgcolor="<? echo $cols;?>">
              <td>
              <div align="center"><b><font size="<? echo $size; ?>" face="<? echo $font; ?>" color="#FFFFFF">Inscription
              pour devenir membre</font></b></div>
              </td>
              </tr>
              </table>
              <table width="100%" border="0">
              <tr>
              <?
              $email = htmlspecialchars($_POST['mail']);
              ?>
              <td width="55%"><font face="<? echo $font; ?>" size="<? echo $size; ?>"><b>Nom
              :</b></font></td>
              <td width="45%">
              <input type="text" name="nom">
              </td>
              </tr>
              <tr>
              <td width="55%"><b><font size="<? echo $size; ?>" face="<? echo $font; ?>">Email
              :</font></b></td>
              <td width="45%">
              <input type="text" name="email">
              </td>
              </tr>
              <tr>
              <td width="55%"> <font face="<? echo $font; ?>" size="<? echo $size; ?>"><b>Site
              internet </b>(facultatif)<b> :</b></font></td>
              <td width="45%">
              <input type="text" name="site">
              </td>
              </tr>
              <tr>
              <td width="55%"> <font face="<? echo $font; ?>" size="<? echo $size; ?>"><b>Localité
              </b>(facultatif)<b> :</b></font></td>
              <td width="45%">
              <input type="text" name="localite">
              </td>
              </tr>
              <tr>
              <td width="55%"><b><font face="<? echo $font; ?>" size="<? echo $size; ?>">Mot
              de passe :</font></b></td>
              <td width="45%">
              <input type="password" name="pass1">
              </td>
              </tr>
              <tr>
              <td width="55%"><font face="<? echo $font; ?>" size="<? echo $size; ?>"><b>Confirmation
              du mot de passe :</b></font></td>
              <td width="45%">
              <input type="password" name="pass2">
              </td>
              </tr>
              </table>
              <table width="100%" border="0">
              <tr>
              <td>
              <center><input type="submit" name="Submit" value="Valider"></center>
              </td>
              </tr>
              </table>
              </td>
              </tr>
              </table>
              </form>

              <table width="400" border="0" align="center" bgcolor="<? echo $colp;?>">
              <tr>
              <td>
              <table width="100%" border="0">
              <tr bgcolor="<? echo $cols;?>">
              <td>
              <div align="center"><b><font size="<? echo $size; ?>" face="<? echo $font; ?>" color="#FFFFFF">Informations</font></b></div>
              </td>
              </tr>
              </table>
              <table width="100%" border="0">
              <tr>
              <td><font face="<? echo $font; ?>" size="<? echo $size; ?>"><?php echo $inscription; ?></font></td>
              </tr>
              </table>
              </td>
              </tr>
              </table>

              <?php

              //Page du bas
              include("sources/bas.php");
              ?>
              1. Il suffit de le mettre avant

                if (!EmailOK($email)) {
                $inscr = false;
                echo "<center><br><font face=\"$font\" size=\"$size\"><b>Votre email est incorrect.</b></font><br>";
                }
                dans le code que j'ai corrigé.

                Tu ma donnée 2 codes différents, un qui l'input s'appelle email
                <input type="text" name="email">
                Pour ce code tu devras vérifier
                $email = htmlspecialchars($_POST['email']);

                et celui pour ton post " gfcna 24 avr 2010 à 21:39 "
                tu devrais vérifier
                $email = htmlspecialchars($_POST['mail']);

                Tu as 2 formulaires dans des langues différentes, mais tu devrais garder le meme nom pour tes inputs.

                Je vais te donner une exemple simple peut-etre que ca va te permettre de mieux comprendre!

                dans une page que je vais appeler form.php je vais mettre le code suivant
                <?php
                $content = '';
                $content .= '<form method="post" action="validate.php">';
                $content .= '<input name="email" />';
                $content .= '<input type="submit" name="submit" value="Submit" />';
                $content .= '</form>';

                echo $content;
                ?>

                dans la page validate.php

                <?php
                if (isset($_POST['email']))
                $email = htmlspecialchars($_POST['email']);
                else
                $email = '';

                if (!EmailOK($email))
                echo 'email not valid';
                else
                echo 'email valid';

                function EmailOK($mail) {
                return preg_match('/^[A-Za-z0-9\._-]+[@][A-Za-z0-9\._-]+[\.].[A-Za-z0-9]+$/',$mail);
                }

                ?>

                Le name que tu donnes a ton input dans ton formulaire va se retrouver, quand ton form va etre envoyer, dans la variable $_POST si le form est envoyé en post sinon $_GET si le form est envoyé en get.
            2. voici le code de mon formulaire d'inscription :

              <?
              include("inc/head.php");
              ?>
              <body bgcolor=white>
              <p align="center"><font size="+2" color="#33CCFF" face="Arial, Helvetica, sans-serif"><i>Veuillez
              remplir le formulaire ci dessous</i></font></p>
              <br><br>
              <form method="POST" action="inscripverif.php">
              <div align="center">
              <table border="1" cellpadding="10" cellspacing="0" width="50%" bordercolor="#000080">
              <tr>
              <td width="22%" bgcolor="#CAE4FF"><font face="Arial" size="2">Pseudo</font></td>
              <td width="78%"><input type="text" name="user" size="30" selected></td>
              </tr>
              <tr>
              <td width="22%" bgcolor="#CAE4FF"><font face="Arial" size="2">mot de passe</font></td>
              <td width="78%"><input type="password" name="mdp" size="30"></td>
              </tr>
              <tr>
              <td width="22%" bgcolor="#CAE4FF"><font face="Arial" size="2">Mail</font></td>
              <td width="78%"><input type="text" name="mail" size="30"></td>
              </tr>
              <tr>
              <td width="22%" bgcolor="#CAE4FF"><font face="Arial" size="2">Site</font></td>
              <td width="78%"><input type="text" name="url" size="30"></td>
              </tr>
              </table>
              <br>
              <input type="submit" value="Valider">
              </div>
              </form>
              <p align="center"> </p>
              <p align="center"><i></i></p>
              <div align="center"><img src="img/php-small-white.gif" width="88" height="31"><img src="img/poweredbymysql-88.png" width="88" height="31"><br>
              <br>
              </div>
              </body>

              </html>
              1. Il y a un endroit dans ton code ou tu regardes si le courriel est valide
                if (!EmailOK($email)) {
                il faut que tu remplisses cette variable avant de pouvoir la vérifier
                $email = htmlspecialchars($_POST['mail']);
            3. merci de ton aide il est vrai que le code est plus clair désormais.

              Mais j'ai toujours le même problème dès que je valide l'inscription toujours se même message qui persiste :

              Votre email est incorrect.

              Un ou pluiseurs champs obligatoire n'ont pas été rempli.

              Un ou pluiseurs champs obligatoire n'ont pas été rempli.

              Veuillez recommencer votre inscription.

              je débute en php vois-tu ce qui peut causer ce problème?

              Merci
              1. quelle est la valeur qui se retrouve dans ta variable $email?
            4. Ton expression ereg n'est pas écrite comme il faut et tu ne devrais pas utiliser la fonction ereg mais plutôt preg_match car ereg est rendu deprecated avec 5.3.0.

              Également tes echo devraient être écrit de cette manière
              echo "<center><br><font face=\"$font\" size=\"$size\"><b>Votre email est incorrect.</b></font><br>";

              plutôt que de mettre ton <? echo $font; ?> parce que tu ne peux mettre une balise <? dans une balise <?

              il n'y avait aucune indentation pour ton code, ce qui aide pour la lecture.

              Tu devrais utiliser des bool plutôt que des 0 et 1

              Tu avait oublier de regarder si ta variable $query existait.

              Tu ne devrais pas utiliser la balise font mais plutôt mettre du CSS.

              J'ai réécris ton code parce qu'il y avait beaucoup d'erreur donc il sera plus facile pour toi de faire la comparaison entre les deux.

              Bonjour,

              Voici mon code qui agit lorsque que je clique sur le bouton valider.

              <?php

              //Page du haut
              include("sources/haut.php");

              //Fichier necessaire
              include("sources/config.php");

              // Verifie si on peut se connecter a la base sql
              $connect=mysql_connect($host,$user,$pass) or die ("Impossible de se connecter");
              mysql_select_db($base, $connect) or die ("Impossible de selectionner la base de donnees");

              //Configure les dates et les heures
              $date= date("Y-m-d");
              $heure= date("H:i:s");
              $quipass= date("Y-m-d");
              $heurepass= date("H:i:s");

              //Verification des differents champs
              $inscr=true;

              //Verifie si l'email est correct
              function EmailOK($mail) {
              return preg_match('/^[A-Za-z0-9\._-]+[@][A-Za-z0-9\._-]+[\.].[A-Za-z0-9]+$/',$mail);
              }

              if (!EmailOK($email)) {
              $inscr = false;
              echo "<center><br><font face=\"$font\" size=\"$size\"><b>Votre email est incorrect.</b></font><br>";
              }

              //Verifie que tous les champs obligatoires ont été rempli
              if (!$nom || !$email || !$pass1 || !$pass2) {
              $inscr = false;
              echo "<center><br><font face=\"$font\" size=\"$size\"><b>Un ou pluiseurs champs obligatoire n'ont pas été rempli.</b></font><br>";
              }

              //Verifie si le mot de passe et sa confirmation est equivalent
              if ($pass1!=$pass2) {
              $inscr = false;
              echo "<center><br><font face=\"$font\" size=\"$size\"><b>Le mot de passe ne correspond pas à la confirmation.</b></font><br>";
              }

              //Recupere le nombre de messages au total
              $result = mysql_query ("SELECT * FROM comptes WHERE nom='$nom'") or die ("Requete impossible");
              $exnom = mysql_num_rows($result);
              if ($exnom!=0){
              $inscr = false;
              echo "<center><br><font face=\"$font\" size=\"$size\"><b>Votre nom est deja pris.</b></font><br>";
              }

              //Cryptage du mot de passe
              $pass1 = md5($pass1);

              //Enregistrement des donnees dans la base de donnees
              if ($inscr){
              $query ="insert into comptes (nom, pass, email, site, localite, date, heure, quipass, heurepass) values('$nom', '$pass1', '$email', '$site', '$localite', '$date', '$heure', '$quipass', '$heurepass')";
              echo "<center><br><font face=\"$font\" size=\"$size\"><b>Votre inscription a réussi.</b></font><br>";
              echo "<font face=\"$font\" size=\"$size\">Veuillez-vous connecter pour accéder à l'espace membre.</font><br><br>";
              echo "<a href=\"index.php\"><font face=\"$font\" size=\"$size\">Se connecter</font></a><br></center>";
              }
              //si il y a une erreur
              else {
              echo "<center><br><font face=\"$font\" size=\"$size\"><b>Veuillez recommencer votre inscription.</b></font><br><br>";
              echo "<a href=\"inscription.php\"><font face=\"$font\" size=\"$size\">Inscription</font></a><br></center>";
              }

              if (isset($query))
              mysql_query($query, $connect);
              mysql_free_result($result);
              mysql_close($connect);

              //Page du bas
              include("sources/bas.php");
              ?>
              1. Ah oui! également, tu utilises trop de parenthèses.
            5. voici ce qu'il m'affiche désolé un oublit :
              ///////////////////////////////////
              Votre email est incorrect.

              Un ou pluiseurs champs obligatoire n'ont pas été rempli.

              Veuillez recommencer votre inscription.

              //////////////////////////////////
              1. "Et voici ce qu'il m'affiche quand je valide l'inscription alors que je remplit les champs correctement."

                C'est-à-dire ?