ptifed | Bonjsoir
Tout est plus ou moins expliqué dans le titre de mon post. Voila, j'ai repris pas à pas le cours de Tadzoa pour créer son forum (sur le site du zéro). De ce cours, je n'ai cherche à extraire que la partie "logon" (espace membre), c'est à dire inscription et login. J'ai copié (apres analyse du cours... Que j'ai plutôt bien compris dans l'ensemble même si je n'aurais surement jamais réussi a faire ca aussi bien que lui hihi ) Après quelques corrections, tout semble marché.. Le formulaire d'inscription marche bien (j'ai vérifié sur phpmyadmin, le membre qui s'inscrit est bien répertorié dans la base de données), il n'y a aucuns messages d’erreurs de programmation, tout va bien.
Mais quand on est débutant, il y a toujours quelque chose qui cloche Comme dit plus haut, tout va bien hormis une chose: malgré l'entrée des bons identifiants dans la zone de log, j'obtiens le message suivant (desolé je ne peux que dire ce dont je me rappelle car wamp ne semble pas marché aujourd'hui ):
"Connexion impossible. Un au moins des identifiants est erroné"
Malgré de nombreuses recherches sur le forum (j'ai vu pas mal de gens qui ont plus ou moins le même problème que moi), tout ce qui a été conseillé n'a pas marché avec moi Je viens donc à vous pour vous demander de l'aide car la je suis vraiment perdu Merci par avance!
Je vous copie donc les codes source de mes pages en espérant que vous pourrez m'aider La parenthèse étant fermée, passons aux choses sérieuses PAGE INDEX
Code :
- <?php session_start();
- $titre="forum_membres";
- $lvl=(isset($_SESSION['level']))?(int) $_SESSION['level']:1;
- $id=(isset($_SESSION['id']))?(int) $_SESSION['id']:0;
- $pseudo=(isset($_SESSION['pseudo']))?$_SESSION['pseudo']:'';
- ?>
- <?php
- include("identifiants.php" );
- include("constants.php" );
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
- <head>
- <title>Mini-chat</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <link rel="stylesheet" media="screen" type="text/css" title="Design" href="chat.css" />
- </head>
- <body>
- <div id="corps">
-
- <span class=titre>Bienvenue sur ALL-CHAT.fr</span>
-
-
-
- <div class=connexion>
- <?php
- if (!isset($_POST['pseudo']))
- {
- echo '<form method="post" action="connexion.php">
- <fieldset>
- <legend>Connexion</legend>
- <p>
- <label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
- <label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
- </p>
- <p><input type="submit" value="Connexion" /></p></form>
- <a href="register.php">Pas encore inscrit ?</a>
- </fieldset>
- ';
- }
- ?>
- </div>
- </div>
-
- </body>
- </html>
|
PAGE CONNEXION
Code :
- <?php session_start();
- $titre="forum_membres";
- $id="";
- $page="?";
- $_POST="?";
- ?>
- <?php
- include("identifiants.php" );
- include("functions.php" );
- include("constants.php" );
- ?>
- <?php
- if ($id!=0) erreur(ERR_IS_CO);
- ?>
- <?php
- function erreur($err='')
- {
- $mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
- exit('<p>'.$mess.'</p>
- <p>Cliquez <a href="index.php">ici</a> pour revenir à la page d\'accueil</p></div></body></html>');
- }
- ?>
- <?php
- if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
- {
- echo '<form method="post" action="connexion.php">
- <fieldset>
- <legend>Connexion</legend>
- <p>
- <label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
- <label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
- </p>
- </fieldset>
- <p><input type="submit" value="Connexion" /></p></form>
- <a href="register.php">Pas encore inscrit ?</a>';
- }
- //On reprend la suite du code
- else
- {
- $message='';
- if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
- {
- $message = '<p>une erreur s\'est produite pendant votre identification.
- Vous devez remplir tous les champs</p>
- <p>Cliquez <a href="connexion.php">ici</a> pour revenir</p>';
- }
- else //On check le mot de passe
- {
- $query=$db->prepare('"SELECT membre_id, membre_pseudo, membre_mdp, membre_rang
- FROM forum_membres WHERE membre_pseudo = ":"pseudo"');
- $query->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
- $query->execute();
- $data=$query->fetch();
- if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
- {
- $_SESSION['pseudo'] = $data['membre_pseudo'];
- $_SESSION['level'] = $data['membre_rang'];
- $_SESSION['id'] = $data['membre_id'];
- $message = '<p>Bienvenue '.$data['membre_pseudo'].',
- vous êtes maintenant connecté!</p>
- <p>Cliquez <a href="index.php">ici</a>
- pour revenir à la page d accueil</p>';
- }
- else // Acces pas OK !
- {
- $message = '<p>Une erreur s\'est produite
- pendant votre identification.<br /> Le mot de passe ou le pseudo
- entré n\'est pas correcte.</p><br />Cliquez <a href="index.php">ici</a>
- pour revenir à la page d accueil</p>';
- }
- }
- echo $message.'';
-
- }
- ?>
|
PAGE REGISTER
Code :
- <?php session_start();
- $titre="Enregistrement";
- $id="?";
- include("identifiants.php" );
- include("functions.php" );
- echo '<p><i>Vous êtes ici</i> : <a href="index.php">Index du Chat</a> --> Enregistrement';
- if ($id!=0) erreur(ERR_IS_CO);
- ?>
- <?php
- function erreur($err='')
- {
- $mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
- exit('<p>'.$mess.'</p>
- <p>Cliquez <a href="index.php">ici</a> pour revenir à la page d\'accueil</p></div></body></html>');
- }
- ?>
- <?php
- if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
- {
- echo '<h1>Inscription 1/2</h1>';
- echo '<form method="post" action="register.php" enctype="multipart/form-data">
- <fieldset><legend>Identifiants</legend>
- <label for="pseudo">* Pseudo :</label> <input name="pseudo" type="text" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
- <label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" /><br />
- <label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
- </fieldset>
- <fieldset><legend>Contacts</legend>
- <label for="email">* Votre adresse Mail :</label><input type="text" name="email" id="email" /><br />
- <label for="website">Votre site web :</label><input type="text" name="website" id="website" />
- </fieldset>
- <fieldset><legend>Informations supplémentaires</legend>
- <label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
- </fieldset>
- <fieldset><legend>Profil sur le forum</legend>
- <label for="avatar">Choisissez votre avatar :</label><input type="file" name="avatar" id="avatar" />(Taille max : 10Ko)<br />
- <label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
- </fieldset>
- <p>Les champs précédés d un * sont obligatoires</p>
- <p><input type="submit" value="S\'inscrire" /></p></form>
- ';
- } //Fin de la partie formulaire
- else //On est dans le cas traitement
- {
- $pseudo_erreur1 = NULL;
- $pseudo_erreur2 = NULL;
- $mdp_erreur = NULL;
- $email_erreur1 = NULL;
- $email_erreur2 = NULL;
- $signature_erreur = NULL;
- $avatar_erreur = NULL;
- $avatar_erreur1 = NULL;
- $avatar_erreur2 = NULL;
- $avatar_erreur3 = NULL;
- ?>
- <?php
- //On récupère les variables
- $i = 0;
- $temps = time();
- $pseudo=$_POST['pseudo'];
- $signature = $_POST['signature'];
- $email = $_POST['email'];
- $website = $_POST['website'];
- $localisation = $_POST['localisation'];
- $pass = md5($_POST['password']);
- $confirm = md5($_POST['confirm']);
- //Vérification du pseudo
- $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
- $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
- $query->execute();
- $pseudo_free=($query->fetchColumn()==0)?1:0;
- $query->CloseCursor();
- if(!$pseudo_free)
- {
- $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
- $i++;
- }
- if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
- {
- $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
- $i++;
- }
- //Vérification du mdp
- if ($pass != $confirm || empty($confirm) || empty($pass))
- {
- $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
- $i++;
- }
- $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
- $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
- $query->execute();
- $pseudo_free=($query->fetchColumn()==0)?1:0;
- //Vérification de l'adresse email
- //Il faut que l'adresse email n'ait jamais été utilisée
- $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
- $query->bindValue(':mail',$email, PDO::PARAM_STR);
- $query->execute();
- $mail_free=($query->fetchColumn()==0)?1:0;
- $query->CloseCursor();
-
- if(!$mail_free)
- {
- $email_erreur1 = "Votre adresse email est déjà utilisé par un membre";
- $i++;
- }
- //On vérifie la forme maintenant
- if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
- {
- $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
- $i++;
- }
- //Vérification de la signature
- if (strlen($signature) > 200)
- {
- $signature_erreur = "Votre signature est trop longue";
- $i++;
- }
- //Vérification de l'avatar :
- if (!empty($_FILES['avatar']['size']))
- {
- //On définit les variables :
- $maxsize = 10024; //Poid de l'image
- $maxwidth = 100; //Largeur de l'image
- $maxheight = 100; //Longueur de l'image
- $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
-
- if ($_FILES['avatar']['error'] > 0)
- {
- $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
- }
- if ($_FILES['avatar']['size'] > $maxsize)
- {
- $i++;
- $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong> contre <strong>".$maxsize." Octets</strong> )";
- }
- $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
- if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
- {
- $i++;
- $avatar_erreur2 = "Image trop large ou trop longue :
- (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong> )";
- }
-
- $extension_upload = strtolower(substr( strrchr($_FILES['avatar']['name'], '.') ,1));
- if (!in_array($extension_upload,$extensions_valides) )
- {
- $i++;
- $avatar_erreur3 = "Extension de l'avatar incorrecte";
- }
- }
- if ($i==0)
- {
- echo'<h1>Inscription terminée</h1>';
- echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le Chat</p>
- <p>Cliquez <a href="index.php">ici</a> pour revenir à la page d accueil</p>';
- //La ligne suivante sera commentée plus bas
- $nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):'';
-
- $query=$db->prepare('INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email, membre_siteweb, membre_avatar,
- membre_signature, membre_localisation, membre_inscrit, membre_derniere_visite)
- VALUES (:pseudo, :pass, :email, :website, :nomavatar, :signature, :localisation, :temps, :temps)');
- $query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
- $query->bindValue(':pass', $pass, PDO::PARAM_INT);
- $query->bindValue(':email', $email, PDO::PARAM_STR);
- $query->bindValue(':website', $website, PDO::PARAM_STR);
- $query->bindValue(':nomavatar', $nomavatar, PDO::PARAM_STR);
- $query->bindValue(':signature', $signature, PDO::PARAM_STR);
- $query->bindValue(':localisation', $localisation, PDO::PARAM_STR);
- $query->bindValue(':temps', $temps, PDO::PARAM_INT);
- $query->execute();
- //Et on définit les variables de sessions
- $_SESSION['pseudo'] = $pseudo;
- $_SESSION['id'] = $db->lastInsertId(); ;
- $_SESSION['level'] = 2;
- $query->CloseCursor();
- }
- else
- {
- echo'<h1>Inscription interrompue</h1>';
- echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
- echo'<p>'.$i.' erreur(s)</p>';
- echo'<p>'.$pseudo_erreur1.'</p>';
- echo'<p>'.$pseudo_erreur2.'</p>';
- echo'<p>'.$mdp_erreur.'</p>';
- echo'<p>'.$email_erreur1.'</p>';
- echo'<p>'.$email_erreur2.'</p>';
- echo'<p>'.$signature_erreur.'</p>';
- echo'<p>'.$avatar_erreur.'</p>';
- echo'<p>'.$avatar_erreur1.'</p>';
- echo'<p>'.$avatar_erreur2.'</p>';
- echo'<p>'.$avatar_erreur3.'</p>';
-
- echo'<p>Cliquez <a href="register.php">ici</a> pour recommencer</p>';
- }
- }
- ?>
- </div>
- </body>
- </html>
|
PAGE IDENTIFIANTS
Code :
- <?php
- try
- {
- $db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
- }
- catch (Exception $e)
- {
- die('Erreur : ' . $e->getMessage());
- }
- ?>
|
PAGE FUNCTIONS
Code :
- <?php
- function move_avatar($avatar)
- {
- $extension_upload = strtolower(substr( strrchr($avatar['name'], '.') ,1));
- $name = time();
- $nomavatar = str_replace(' ','',$name).".".$extension_upload;
- $name = "/avatars".str_replace(' ','',$name).".".$extension_upload;
- move_uploaded_file($avatar['tmp_name'],$name);
- return $nomavatar;
- }
- ?>
|
PAGE CONSTANTS
Code :
- <?php
- define('VISITEUR',1);
- define('INSCRIT',2);
- define('MODO',3);
- define('ADMIN',4);
- ?>
- <?php
- define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
- ?>
|
Voila je pense ne rien avoir oublié...
Je comptes sur vous les gars! (et les filles s'il y en a )
Merci encore! Bonne soirée à vous Message édité par ptifed le 26-01-2011 à 02:47:04
|