Kommunauty
Connexion
Inscription

PHP - Souci de connexion dans un script de site communautaire


Tutoland Messages : 1

Bonjour,

je suis en train de coder un système de connexion pour un projet de site communautaire. Si j'essaie de me connecter avec ma session pour tester, ça ne fonctionnes pas :


<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
     header("Location: index.php");
}
else
{
     
     // Formulaire visible par défaut
     $masquer_formulaire = false;
     
     // Une fois le formulaire envoyé
     if(isset($_POST["BT_Envoyer"]))
     {
          
          // Vérification de la validité des champs
          if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
          {
               $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />n";
               $message .= "L'utilisation de l'underscore est autorisée";
          }
          elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
          {
               $message = "Votre mot de passe doit comporter au moins 6 caractères";
          }
          else
          {
               
               // Connexion à la base de données
               // Valeurs à modifier selon vos paramètres configuration
               mysql_connect("adresse", "login", "motdepasse");
               mysql_select_db("nomdelabasededonnees");
               
               // Sélection de l'utilisateur concerné
               $result = mysql_query("
                    SELECT Id, prenom, mot_de_passe, compte_active
                    FROM membres
                    WHERE prenom = '" . $_POST["TB_Nom_Utilisateur"] . "'
               ");
               
               // Si une erreur survient
               if(!$result)
               {
                    $message = "Une erreur est survenue lors de la tentative de connexion";
               }
               else
               {
                    
                    // Si aucun utilisateur n'a été trouvé
                    if(mysql_num_rows($result) == 0)
                    {
                         $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
                    }
                    else
                    {
                         
                         // Récupération des données
                         $row = mysql_fetch_array($result);
                         
                         // Si le compte n'a pas été activé
                         if($row["Compte_Active"] == 0)
                         {
                              $message = "Votre compte utilisateur n'a pas été activé";
                         }
                         else
                         {
                              
                              // Vérification du mot de passe
                              if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
                              {
                                   $message = "Votre mot de passe est incorrect";
                              }
                              else
                              {
                                   
                                   // Définition du temps d'expiration des cookies
                                   $expiration =
                                        empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
                                   
                                   // Création des cookies
                                   setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                                   setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
                                   
                                   // Fermeture de la connexion à la base de données
                                   mysql_close();
                                   
                                   // Redirection de l'utilisateur
                                   header("Location: index.php");
                                   
                              }
                              
                         }
                         
                    }
                    
               }
               
               // Fermeture de la connexion à la base de données
               mysql_close();
               
          }
          
     }
     
}

?>

Pourriez-vous me dire la raison du souci ? Et si possible, réécrire le script en entier et corrigé puis le poster par MP ou ici. Ce sera plus facile pour moi.

Merci de votre aide,

Tutoland

samedi 5 février 2011 (Dernière édition samedi 5 février 2011)

SiMax Messages : 7572

Salut !

J'ai pas vu de faute énorme à première vue. Quand tu dis que ça marche pas, ça fait quoi ?

samedi 5 février 2011

openrpg Messages : 172
<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
     header("Location: index.php");
}
else
{
     
     // Formulaire visible par défaut
     $masquer_formulaire = false;
     
     // Une fois le formulaire envoyé
     if(isset($_POST["BT_Envoyer"]))
     {
          
          // Vérification de la validité des champs
          if(isset($_POST["TB_Nom_Utilisateur"]) && !ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
          {
               $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />n";
               $message .= "L'utilisation de l'underscore est autorisée";
          }
          elseif(isset($_POST["TB_Mot_de_Passe"]) && !ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
          {
               $message = "Votre mot de passe doit comporter au moins 6 caractères";
          }
          elseif(isset($_POST["TB_Mot_de_Passe"]) && isset($_POST["TB_Nom_Utilisateur"]))
          {
               
               // Connexion à la base de données
               // Valeurs à modifier selon vos paramètres configuration
               mysql_connect("adresse", "login", "motdepasse");
               mysql_select_db("nomdelabasededonnees");
               
               // Sélection de l'utilisateur concerné
               $result = mysql_query("
                    SELECT Id, prenom, mot_de_passe, compte_active
                    FROM membres
                    WHERE prenom = '" . $_POST["TB_Nom_Utilisateur"] . "'
               ");
               
               // Si une erreur survient
               if(!$result)
               {
                    $message = "Une erreur est survenue lors de la tentative de connexion";
               }
               else
               {
                    
                    // Si aucun utilisateur n'a été trouvé
                    if(mysql_num_rows($result) == 0)
                    {
                         $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
                    }
                    else
                    {
                         
                         // Récupération des données
                         $row = mysql_fetch_array($result);
                         
                         // Si le compte n'a pas été activé
                         if($row["Compte_Active"] == 0)
                         {
                              $message = "Votre compte utilisateur n'a pas été activé";
                         }
                         else
                         {
                              
                              // Vérification du mot de passe
                              if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
                              {
                                   $message = "Votre mot de passe est incorrect";
                              }
                              else
                              {
                                   
                                   // Définition du temps d'expiration des cookies
                                   $expiration =
                                        isset($_POST["CB_Connexion_Automatique"]) && empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
                                   
                                   // Création des cookies
                                   setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                                   setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
                                   
                                   // Fermeture de la connexion à la base de données
                                   mysql_close();
                                   
                                   // Redirection de l'utilisateur
                                   header("Location: index.php");
                                   
                              }
                              
                         }
                         
                    }
                    
               }
               
               // Fermeture de la connexion à la base de données
               mysql_close();
               
          }
          
     }
     
}

?>
samedi 5 février 2011

Guradon Messages : 59

Un truc avec les cookies : il faut faire extrêmement attention à ce que le visiteur peut mettre dedans. En fait, le grand problème avec les cookies est que tu ne peux pas faire confiance à l'utilisateur... Tu devrais aussi les sécuriser en http_only pour éviter des failles

samedi 5 février 2011

openrpg Messages : 172

http://systemz.power-heberg.com/?p=30

Maintenant vous vous situez ou ?

samedi 5 février 2011

SiMax Messages : 7572

Trop drôle ce billet ! Moi perso, sur Kommunauty, j'ai remplacé mon système de connexion par des Mattracks

Ils ont juste oublié l'admin relou qui rappelle que :

  • Corriger un code c'est super gentil, expliquer où était l'erreur c'est mieux
  • N'importe quel message, tant qu'il est constructif et ouvre des perspectives, même s'il ne répond pas juste à la question, reste quand même intéressant
dimanche 6 février 2011 (Dernière édition dimanche 6 février 2011)

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !