Problème avec les conditions, lors de l'identification

MoulouD1993 Messages postés 28 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 28 janvier 2012 - 28 janv. 2012 à 22:52
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 28 janv. 2012 à 23:44
Bonsoir à tous,

Voilà j'ai un problème avec les conditions le problème c'est que j'ai une page index.html et une page login.php le problème c'est que à chaque fois que je met rien dans le formulair qu'il y a dans index.html pour se connecter il me dit que c'est connecté, et pourtant j'ai mit cette condition if ((isset($_POST['username']) && isset($_POST['password'])))

et même si je remplie qu'une seule case il me dit que c'est connecté

<?php
session_start (); 
include('config.php');
$pseudo= $_POST['username'];
$pass=$_POST['password'];
     
$connection = @mysql_connect($hote,$user,$passe) //connexion à PHPmyadmin
or die("erreur de connexion au serveur $host"); // affichage d'une message d'erreur si impossible de se connecter

mysql_select_db($db, $connection) //connexion à la base de donnée
or die (" Erreur de connexion a la base de donnee $db "); //affichage d'un message d'erreur si impossible de se connecter

$sql  "SELECT pseudo FROM admin WHERE pseudo '".$pseudo."' ";

$req = mysql_query($sql);
      if($sql){
         
         // On sélectionne toute les données de l'utilisateur dans la base de données.   
         $sql "SELECT * FROM admin WHERE pseudo '".$pseudo."' ";
      
         $req = mysql_query($sql);
         
         // Si la requête SQL c'est bien passé...      
         if($sql){
         
            // On récupère toute les données de l'utilisateur dans la base de données.
            $donnees = mysql_fetch_assoc($req);
}

    // on teste si nos variables sont définies
    if ((isset($_POST['username']) && isset($_POST['password']))) { 
     
          // on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
           if($pass == $donnees["password"]){
                // dans ce cas, tout est ok, on peut démarrer notre session
     
                // on la démarre :)
                
                // on enregistre les paramètres de notre visiteur comme variables de session ($login et $pwd) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
                $_SESSION['login'] = $pseudo; 
                $_SESSION['pass'] = $pass;
$_SESSION['id'] = $donnees['id'];
             echo ''; 
             // puis on le redirige vers la page d'accueil
             echo '<meta http-equiv="refresh" content="0;URL=upload.php">'; 				
          } 
          else { 
             // Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
             echo ''; 
             // puis on le redirige vers la page d'accueil
             echo '<meta http-equiv="refresh" content="0;URL=index.php">'; 
          }  
    }  
    else { 
          echo 'Les variables du formulaire ne sont pas déclarées.';  
    }
} 	
    ?> 



NB : j'ai testé sur 2 serveur local (Xampp 1.7.7 et EasyPHP 5.3.8.1)
Merci à vous tous.

2 réponses

MoulouD1993 Messages postés 28 Date d'inscription mardi 7 avril 2009 Statut Membre Dernière intervention 28 janvier 2012
28 janv. 2012 à 23:32
j'ai trouvé ou est le problème au lieu de mettre !empty j'ai mit isset
j'ai cru que ISSET ET !EMPTY ont la même fonction.

Merci en tout les cas.
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
28 janv. 2012 à 23:44
Salut,

Ton erreur provient du fait que tu utilises l'opérateur == pour comparer deux variables dont, dans ton cas problématique, sont une variable non définie et une variable contenant la chaîne vide. Par transtypage on obtient exactement la même valeur nulle, d'où le fait que ta condition soit vraie.

Au passage j'en profite pour te faire plusieurs remarques de al plus haute importance sur ton code qui est, désolé d'être franc, vraiment très mauvais.
- Ton code est sensibles aux injections SQL.
- Ton code est extrêmement mal structuré et très mal divisé (aucune couche, aucune partie logique).
Et j'en passe. Sérieusement, avant de te lancer dans la manipulation de base de données, essaye de mieux te familiariser avec PHP en soit.
0
Rejoignez-nous