Formulaire de connexion

bonsoir,

je encore un problem avec la connexion de l'espace membre
voici le mon problem:
dans mon formulaire de connexion, meme si que saisis les bonnes informations, je arrivent a se connecter a mon espace membre donc je voudrai que vous m'aidiez s'il vous plait et vois mon code de connexion:
<strong></strong>
<div class="contenu">
<h2>Controle System accese </h2>

<form method="post" action="">
<label for="login">login:</label>
<input type="text" name="login" /><br />
<label for="pass">Password :</label>
<input type="password" name="pass" />
<br />
<button class="btn btn-primary" type="submit" name="submit">Connexion</button>
</form>
<?php

include'fonctions/connection_BDD.php';
if(isset($_POST['submit'])){
$login='';
$pass='';

if(empty($_POST['login']))
{
$erreurs[] = "Veuillez renseigner le champs login";
}

if(empty($_POST['pass']))
{
$erreurs[] = "Veuillez saisir votre mot de passe";

}

if(!empty($erreurs))
{
foreach($erreurs as $erreur)
{
echo"<div class='erreur'>".$erreur."</div>";
}
}else{
if(verie_couple_login_password($login,$pass)==0)
{
echo '<div class="erreur">Pseudo ou password invalid</div>';
}else{
$_SESSION['login']=$login;
$_SESSION['pass']=$pass;
header("location:index.php");
}
}

}

?>

you don't have a count?<a href="interface.php?page=incription" title="pour les personnes n'ayant pas un compte">Cliquez ici</a>

<div align="center"></div>
</div>

et voici la fonction permettant de verifier la combinaison de couple login/pass
function verie_couple_login_password($login,$pass)
{
$pass=sha1($pass);
$resulte=mysql_query("SELECT nom, password FROM utilisateur WHERE nom='$login' AND password='$pass'") or die("erreur");
$rows=mysql_num_rows($resulte);
return $rows;
}

6 réponses

  1. Modérateur
    Bonjour,

    Déjà... prend l'habitude de mettre le maximum de php AVANT le html.
    Cela rend plus facile le debogage du code par la suite....

    Récupères également proprement les variables AVANT de les utiliser.
    Pour cela tu peux utliser des !empty ou isset avec l'écriture Ternaire...

    Peux tu essayer ceci :
    <code php>
    <?php
    //Affichage des erreurs PHP
    error_reporting(E_ALL);
    
    //Connexion à la BDD
    require_once 'fonctions/connection_BDD.php';
    
    //récupération "propre" des variables
    $login=!empty($_POST['login']) ? $_POST['login'] : NULL;
    $pass=!empty($_POST['pass']) ? $_POST['pass'] : NULL
    
    $erreurs = array();
    if(isset($_POST['submit'])){
      if(!$login){$erreurs[] = "Veuillez renseigner le champs login";};
      if(!$pass){$erreurs[] = "Veuillez saisir votre mot de passe";};
    
      if(verie_couple_login_password($login,$pass)==0){
        $erreurs[] = '<div class="erreur">Pseudo ou password invalid</div>';
      }else{
        $_SESSION['login']=$login;
        $_SESSION['pass']=$pass;
        header("location:index.php");
      }
     }
    
    }
    
    ?>
    
    <strong></strong>
    <div class="contenu">
    <h2>Controle System accese </h2>
    
     <form method="post" action="">
      <label for="login">login:</label>
      <input type="text" name="login" /><br />
      <label for="pass">Password :</label>
      <input type="password" name="pass" />
      <br />
      <button class="btn btn-primary" type="submit" name="submit">Connexion</button>
     </form>
    
     <?php
     if(!empty($erreurs)) {
       foreach($erreurs as $erreur) {
    		 echo"<div class='erreur'>".$erreur."</div>";
    	 }
      }
     ?>
     you don't have a count?<a href="interface.php?page=incription" title="pour les personnes n'ayant pas un compte">Cliquez ici</a>
    
     <div align="center"></div>
    </div>
    
    

    </code>

    PS: Tu utilises l'ancienne extension Mysql....
    https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

    je t'invite fortement à passer à PDO ou à Mysqli.
    https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli

    1. merci jordan mais c'est toujours le meme problem
    2. Modérateur
      @adamsjilal- Le même problème...C'est à dire ?
      - Tu es passé à la PDO comme je te l'ai conseillé ?
      - Tu as testé ta requête DIRECTEMENT dans ta BDD pour voir si elle fonctionne ??
    3. Bonjour,
      le probleme c est pas la connexion a la base mais c pblm de code
      normalement la fonction Mysql_num_rows retourn une valeur entiere
      en parcourant si ellle trouve une ou le nom est egal a celui poster par le formulaire et le champs password de la base est egal a celui poster aussi par le formaulair dans ce cas elle devrai dir qu elle a trouver a une personnee et qu'elle charger la partie du code ou le condition verifier. mais lorsque je dit ainsi:
      else{
      if(verie_couple_login_password($login,$pass)==0)//la fonction verifiant un utilisateur bien identifier
      {

      session_start();
      $_SESSION['login']=$login;
      $_SESSION['pass']=$pass;
      header("location:index.php");
      }else{
      echo '<div class="erreur">erreur de password ou pesudo</div>';
      }
      normalement lorsque le resultats de la focntions verifi_couple_login_password($login, $pass)==1), je devrai acceder mon espace membre mais ce n'est pas le cas. c'est le cas contraire que j'y arrive acceder l 'espace membre. c'est a dire lorsque je saisie des fauses information il me permet d'acceder l'espace memebre et lorsque je saisie des informations apropriés adequat il me di que pass ou login incorrecte:
      voici la fonction qui permet de verifier les couple logine password:
      function verie_couple_login_password($login,$pass)
      {
      $pass=sha1($pass);
      $resulte=mysql_query("SELECT nom, password FROM utilisateur WHERE nom='$login' AND password='$pass'") or die("erreur");
      $rows=mysql_num_rows($resulte);
      return $rows;
      }
    4. Modérateur
      Je repete.... AS TU TESTE DIRECTEMENT TA REQUÊTE DANS TA BDD ?
    5. je vien de tester ca a marche la requete