Script inscription, connexion ! [PHP} - Programmation
TomsGuide.com : 700 000 inscrits répondent à toutes vos questions high-tech et informatique.
Pour obtenir de l'aide, inscrivez-vous gratuitement !
 




Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Script inscription, connexion ! [PHP}
 
Profil : IDNaute
Plus d'informations

Salut les idnautes,
J'ai actuellement en projet de coder mon forum, et je me sert donc d'un tuto que jai trouver,
J'ai cependant quelque erreur,
L'inscription et la connexion ne fonctionne pas,
Pourriez-vous m'aider, je vous donne mes page :)

Code :
  1. <?php
  2. //Cette fonction doit être appelée avant tout code html
  3. //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
  4. $titre = "Index du forum";
  5. include("includes/debut.php" );
  6. ?>
  7. <body>
  8. <div id="banniere"></div>
  9. <?php
  10. //Maintenant on se connecte à la base de données
  11. include("includes/connexion_bdd.php" );
  12. ?>
  13. <div id="corps_forum">
  14. <a href ="./index.php">Index du forum</a>
  15. <?php
  16. //On évite qu'un membre déjà connecté se retrouve ici !
  17. if (isset($_SESSION['pseudo']))
  18. {
  19. exit("<p>Désolé mais vous ne pouvez pas accéder à cette page</p>" );
  20. }
  21. ?>
  22. <h1>Inscription 1/2</h1>
  23. <form method="post" action="registerok.php" enctype="multipart/form-data">
  24. <fieldset><legend>Identifiants</legend>
  25. <label for="pseudo">* Pseudo :</label>  <input name="pseudo" type="text" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
  26. <label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" /><br />
  27. <label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
  28. </fieldset>
  29. <fieldset><legend>Contacts</legend>
  30. <label for="email">* Votre adresse E_Mail :</label><input type="text" name="email" id="email" /><br />
  31. <label for="msn">Votre adresse MSN :</label><input type="text" name="msn" id="msn" /><br />
  32. <label for="website">Votre site web :</label><input type="text" name="website" id="website" />
  33. </fieldset>
  34. <fieldset><legend>Informations supplémentaires</legend>
  35. <label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
  36. </fieldset>
  37. <fieldset><legend>Profil sur le forum</legend>
  38. <label for="avatar">Choisissez votre avatar :</label><input type="file" name="avatar" id="avatar" />(Taille max : 10 ko)<br />
  39. <label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
  40. </fieldset>
  41. <p>Les champs précédés d un * sont obligatoires</p>
  42. <p><input type="submit" value="S'inscrire" /></p></form>
  43. </h2>
  44. </div>
  45. </body>
  46. </html>






Code :
  1. <?php
  2. //Cette fonction doit être appelée avant tout code html
  3. //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
  4. $titre = "Index du forum";
  5. include("includes/debut.php" );
  6. ?>
  7. <body>
  8. <div id="banniere"></div>
  9. <?php
  10. //Maintenant, on se connecte à la base de données
  11. include("includes/connexion_bdd.php" );
  12. $i = 0;
  13. //Vérification du pseudo
  14. $nombrepseudo = mysql_result(mysql_query("SELECT COUNT(*) FROM forum_membres WHERE membre_pseudo = '".$_POST['pseudo']."'" ), 0);
  15. if($nombrepseudo != 0)
  16. {
  17.         $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
  18.         $i++;
  19. }
  20. if (strlen($_POST['pseudo']) < 3 || strlen($_POST['pseudo']) > 15)
  21. {
  22.         $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
  23.         $i++;
  24. }
  25. //Vérification du mdp
  26. if ($_POST['password'] != $_POST['confirm'] || empty($_POST['confirm']) || empty($_POST['password']))
  27. {
  28.         $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
  29.         $i++;
  30. }
  31. //Vérification de l'adresse email
  32. //Il faut que l'adresse email n'ait jamais été utilisée
  33. $nombremail = mysql_result(mysql_query("SELECT COUNT(*) FROM forum_membres WHERE membre_email = '".$_POST['email']."'" ), 0);
  34. if ($nombremail!= 0)
  35. {
  36.         $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
  37.         $i++;
  38. }
  39. //On vérifie la forme maintenant
  40. if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']) || empty($_POST['email']))
  41. {
  42.         $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
  43.         $i++;
  44. }
  45. //Vérification de l'adresse MSN
  46. if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['msn']) && !empty($_POST['msn']))
  47. {
  48.         $msn_erreur = "Votre adresse MSN n'a pas un format valide";
  49.         $i++;
  50. }
  51. //Vérification de la signature
  52. if (strlen($_POST['signature']) > 200)
  53. {
  54.         $signature_erreur = "Votre signature est trop longue";
  55.         $i++;
  56. }
  57. //Vérification de l'avatar :
  58. if (!empty($_FILES['avatar']['size']))
  59. {
  60.         //On définit les variables :
  61.         $maxsize = 10024; //Poid de l'image
  62.         $maxwidth = 100; //Largeur de l'image
  63.         $maxheight = 100; //Longueur de l'image
  64.         $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
  65.      
  66.         if ($_FILES['avatar']['error'] > 0)
  67.         {
  68.                 $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
  69.         }
  70.         if ($_FILES['avatar']['size'] > $maxsize)
  71.         {
  72.                 $i++;
  73.                 $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong> )";
  74.         }
  75.         $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
  76.         if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
  77.         {
  78.                 $i++;
  79.                 $avatar_erreur2 = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong> )";
  80.         }
  81.      
  82.         $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
  83.         if (!in_array($extension_upload,$extensions_valides) )
  84.         {
  85.                 $i++;
  86.                 $avatar_erreur3 = "Extension de l'avatar incorrecte";
  87.         }
  88. }
  89. ?>
  90. <div id="corps_forum">
  91. <a href ="./index.php">Index du forum</a> / <a href="./register.php">Inscription</a>
  92. <?php
  93. if ($i == 0) // Si i est vide, il n'y a pas d'erreur
  94. {
  95.         echo'<h1>Inscription terminée</h1>';
  96.         echo'<p>Bienvenue '.$_POST['pseudo'].' vous êtes maintenant inscrit sur le forum</p>';
  97.         echo'<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
  98.         if (isset($_FILES['avatar']['size']))
  99.         {
  100.                 //On déplace l'avatar
  101.                 $avatar = time();
  102.                 $nomavatar = str_replace(' ','',$avatar).".".$extension_upload;
  103.                 $avatar = "./images/avatars/".str_replace(' ','',$avatar).".".$extension_upload;
  104.                 move_uploaded_file($_FILES['avatar']['tmp_name'],$avatar);
  105.         }
  106.      
  107.         //On vérifie que les champs ne continennent pas de html
  108.         //Puis on crypte le mot de passe
  109.         $temps = time();
  110.         $signature = htmlspecialchars($_POST['signature'], ENT_QUOTES);
  111.         $signature = nl2br($signature);
  112.         $pseudo = htmlspecialchars($_POST['pseudo'], ENT_QUOTES);
  113.         $email = htmlspecialchars($_POST['email'], ENT_QUOTES);
  114.         $msn = htmlspecialchars($_POST['msn'], ENT_QUOTES);
  115.         $website = htmlspecialchars($_POST['website'], ENT_QUOTES);
  116.         $localisation = htmlspecialchars($_POST['localisation'], ENT_QUOTES);
  117.         $pass = md5($_POST['password']);
  118.      
  119.         //On balance le tout dans notre table
  120.         mysql_query("
  121.         INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,           
  122.         membre_msn, membre_siteweb, membre_avatar,
  123.         membre_signature, membre_localisation, membre_inscrit, 
  124.         membre_derniere_visite)
  125.         VALUES ('".$pseudo."' , '".$pass."' , '".$email."' ,
  126.         '".$msn."' , '".$website."' , '".$nomavatar."' ,
  127.         '".$signature."' , '".$localisation."' ,  '".$temps."' ,
  128.         '".$temps."' ) " );
  129.      
  130.      
  131.         //Et on définit les variables de sessions
  132.         $_SESSION['pseudo'] = $pseudo;
  133.         $_SESSION['id'] = mysql_insert_id();
  134.         $_SESSION['level'] = 1;
  135. }
  136. else
  137. {
  138.         echo'<h1>Inscription interrompue</h1>';
  139.         echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
  140.         echo'<p>'.$i.' erreur(s)</p>';
  141.         echo'<p>'.$pseudo_erreur1.'</p>';
  142.         echo'<p>'.$pseudo_erreur2.'</p>';
  143.         echo'<p>'.$mdp_erreur.'</p>';
  144.         echo'<p>'.$email_erreur1.'</p>';
  145.         echo'<p>'.$email_erreur2.'</p>';
  146.         echo'<p>'.$msn_erreur.'</p>';
  147.         echo'<p>'.$signature_erreur.'</p>';
  148.         echo'<p>'.$avatar_erreur.'</p>';
  149.         echo'<p>'.$avatar_erreur1.'</p>';
  150.         echo'<p>'.$avatar_erreur2.'</p>';
  151.         echo'<p>'.$avatar_erreur3.'</p>';
  152.      
  153.         echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
  154. }
  155. mysql_close();
  156. ?>
  157. </div>
  158. </body>
  159. </html>
  160. <?
  161. //On déplace l'avatar
  162. $avatar = time();
  163. $nomavatar = str_replace(' ','',$avatar).".".$extension_upload;
  164. $avatar = "./images/avatars/".str_replace(' ','',$avatar).".".$extension_upload;
  165. move_uploaded_file($_FILES['avatar']['tmp_name'],$avatar);
  166. ?>





Sa c'etait l'inscription

Et voila la connexion

Code :
  1. <?php
  2. //Cette fonction doit être placé avant le reste
  3. $titre = "Connexion";
  4. include("includes/debut.php" );
  5. ?>
  6. <div id="banniere"></div>
  7. <div id="corps_forum">
  8. <a href="./index.php">Index du forum</a>
  9. <?php
  10. //Par sécurité, on vérifie que le membre qui accède à cette page n'est pas déjà connecté
  11. if (isset($_SESSION['pseudo']))
  12. {
  13. exit("Désolé, mais vous ne pouvez pas accéder à cette page" );
  14. }
  15. ?>
  16. <h1>Connexion</h1>
  17. <form method="post" action="connexionok.php">
  18. <fieldset>
  19. <legend>Connexion</legend>
  20. <p>
  21. <label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
  22. <label for="password">Mot de Passe :</label><input type="password" name="password" id="password" /><br />
  23. </p>
  24. </fieldset>
  25. <p><input type="submit" value="Connexion" /></p></form>
  26. <a href="./register.php">Pas encore inscrit ?</a>
  27. </div>
  28. </body>
  29. </html>
  30. <label>Se souvenir de moi ?</label><input type="checkbox" name="souvenir" /><br />







Code :
  1. <?php
  2. // Message
  3. if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
  4. {
  5.         $message = '<p>une erreur s est produite pendant votre identification.
  6.         Vous devez remplir tous les champs
  7.         Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
  8. }
  9. else
  10. {
  11.         //Acces interdit : le membre est déjà connecté
  12.         if (isset($_SESSION['pseudo']))
  13.         {
  14.                 $message ='<p>Désolé mais vous ne pouvez
  15.                 pas accéder à cette page</p>';
  16.         }
  17.         else // Autorisation ok : il reste à voir le mot de passe
  18.         {
  19.       include("includes/connexion_bdd.php" );
  20.      
  21.         //On enlève les balises html éventuelles
  22.      
  23.         $pseudo = htmlspecialchars($_POST['pseudo'], ENT_QUOTES);
  24.         $password = htmlspecialchars($_POST['password'], ENT_QUOTES);
  25.      
  26.         $requete1 = mysql_query(' SELECT membre_mdp, membre_id, membre_rang
  27.         FROM forum_membres WHERE membre_pseudo = "'.$pseudo.'" ')
  28.         or die (mysql_error());
  29.         $data1 = mysql_fetch_assoc($requete1);
  30.      
  31.         if ($data1['membre_mdp'] == md5($password)) // Acces OK !
  32.         {
  33.      
  34.                 $_SESSION['pseudo'] = $pseudo;
  35.                 $_SESSION['level'] = $data1['membre_rang'];
  36.                 $_SESSION['id'] = $data1['membre_id'];
  37.      
  38.                 $message = '<p>Bienvenue '.$_SESSION['pseudo'].',
  39.                 vous êtes maintenant connecté!</p>
  40.                 <p>Cliquez <a href="./index.php">ici</a>
  41.                 pour revenir à la page d accueil</p>';
  42.      
  43.         }
  44.         else // Acces pas OK !
  45.         {
  46.                 $message = '<p>Une erreur s est produite
  47.                 pendant votre identification.
  48.                 Le mot de passe ou le pseudo entré n est pas correcte.
  49.                 Cliquez <a href="./connexion.php">ici</a>
  50.                 pour revenir à la page précédente
  51.                 <br /><br />
  52.                 Cliquez <a href="./index.php">ici</a>
  53.                 pour revenir à la page d accueil</p>';
  54.           }
  55.           }
  56. }
  57. //Ici seulement on affiche la page
  58. include("includes/debut.php" );
  59. ?>
  60. <div id="banniere"></div>
  61. <div id="corps_forum">
  62. <?php
  63. echo $message;
  64. ?>
  65. </div>
  66. </body>
  67. </html>
  68. <?
  69. if (isset($_POST['souvenir']))
  70. {
  71. $expire = time() + 365*24*3600;
  72. setcookie('pseudo', $_SESSION['pseudo'], $expire);
  73. }
  74. ?>



Liens sponsorisés


Inscrivez-vous ou connectez-vous pour masquer ceci.

Profil : Extensionaute
Plus d'informations

Salut,

J'ai pas envie de lire 1000 lignes, tu pourrais nous dire quelle erreur tu as, ce qui ne marche pas, etc...
C'est trop vague ce que tu dis.


---------------
/!\ Le vaincrez-vous ?! /!\
Profil : IDNaute
Plus d'informations

Oui je sais,
C'est pas compliquez, je ne peux pas me connectez, sa me maque bonjour darkhos, vous etes connecté, sa me met une redirecction vers lindex, mais je ne suis pas co, ( c'est un comtpe creer par la bdd, puiske je ne peux pas minscririre)
Les erreur a linscription sont :
Edit, c'est reparé ;)
Sauf la connexion

Profil : Extensionaute
Plus d'informations

Tu n'as aucun session_start(), comment veux-tu que ta session fonctionne ? :)


---------------
/!\ Le vaincrez-vous ?! /!\
Profil : IDNaute
Plus d'informations

Elle se trouve dans la page debut.php qui est inclue

Profil : Extensionaute
Plus d'informations

Bah dans le deuxième cas, tu fais ton session_start() après vérifier que les valeurs de session existent...
Le session_start() doit être la première ligne quasiment !


---------------
/!\ Le vaincrez-vous ?! /!\
Profil : IDNaute
Plus d'informations

Voila, j'ai mis mon include de debut.php en 1ere ligne, mais toujour pas moyen de me connecter

Profil : Extensionaute
Plus d'informations

Essaie d'afficher les valeurs des variables de session pour voir si elles fonctionnent déjà.


---------------
/!\ Le vaincrez-vous ?! /!\
Profil : IDNaute
Plus d'informations

Oui elle marche,
Quand je me connecte, sa afiche, Bonjour darkhos, vous etes connecter, et le code source est :
Bienvenue '.$_SESSION['pseudo'].',
vous êtes maintenant connecté!

Donc sa fonctionne


  FORUM Infos-du-Net » Programmation » Script inscription, connexion ! [PHP}

Aller à :
 

Liens