2012-09-19 2 views
0

Je suis juste en train de déconner avec PHP et MySQL pour apprendre des choses ... Jusqu'à maintenant, tout s'est bien passé, mais maintenant je ne trouve aucune solution. La base est un système de connexion très simple. Maintenant, j'essayais de lire le nom d'utilisateur et le mot de passe d'une base de données appelée 'login' avec la table 'userTBL' et les champs 'username' et 'password'. Il semble que la base de données ne renverrait rien, mais pourquoi?!?!MySql ne renvoie rien

<?php 
    session_start(); 

    mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!'); 
    mysql_select_db('login'); 

    if ($_GET['login']) { 
     $username = ($_POST['username']); 
     $password = ($_POST['password']); 

     $tmp = mysql_query("SELECT * FROM `user`"); 

     $data = mysql_fetch_array($tmp); 

     if($tmp) { 
      echo 'FULL<br />'; 
     } else { 
      echo 'EMPTY<br />'; 
     } 

     $_SESSION['username'] = $data['username']; 
     $_SESSION['password'] = $data['password']; 

     if ($username == $_SESSION['username'] && $password == $_SESSION['password']) { 
      $_SESSION['loggedin'] = true; 
      header("Location: protected.php"); 
      exit; 
     } else echo "Wrong details!<br />"; 
    } 
    if ($_SESSION['loggedin'] == true) { 
     header("Location: protected.php"); 
    } 
?> 

Merci pour votre aide!

+1

Vérifiez les erreurs avec 'mysql_error()' – Tchoupi

+0

Comment "semble-t-il" que la base de données ne renvoie rien? Aussi, 'mysql_query()' renvoie une ressource pour les requêtes 'SELECT'; S'il n'y a pas d'erreur dans la requête, '$ tmp' sera toujours vrai, même pour zéro lignes retournées. De même, n'utilisez pas l'extension 'mysql' car elle est déconseillée et son utilisation est déconseillée. – lanzz

+1

Vous dites que le nom de la table est 'userTBL' mais avez' "SELECT * FROM utilisateur" ' – Musa

Répondre

0
<?php 
    session_start(); 

    mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!'); 
    mysql_select_db('login'); 

    if ($_GET['login']) { 
     $username = htmlspecialchars($_POST['username']); 
     $password = htmlspecialchars($_POST['password']); 

     $tmp = mysql_query('SELECT * FROM `userTBL` WHERE `user` = "'.$username.'"'); 

     while ($data = mysql_fetch_array($tmp)) 
     { 
      $_SESSION['username'] = $username; 
      $_SESSION['password'] = $data['password']; 

     if ($password == $_SESSION['password']) { 
      $_SESSION['loggedin'] = true; 
      header("Location: protected.php"); 
      exit; 
     } else echo "Wrong details!<br />"; 
     } 
    } 
    if ($_SESSION['loggedin'] == true) { 
     header("Location: protected.php"); 
    } 
?> 

Également: utilisez salt + hash pour stocker les mots de passe dans la base de données.

1

Vous avez mentionné que votre table s'appelle 'userTBL' mais que vous interrogez la table 'user'. Changez votre requête en: $ tmp = mysql_query ("SELECT * FROM userTBL O WH nom d'utilisateur = {$ username} ET mot de passe = {$ mot de passe}"); La clause 'WHERE' garantit que la requête renvoie uniquement des données correspondant au nom d'utilisateur et au mot de passe saisis dans le formulaire.