2010-04-13 5 views
1

Ok donc j'essaye de créer un script de connexion, ici j'utilise PHP5 et mysqli, je voudrais vous demander si vous pourriez me dire pourquoi il ne fait que retourner "l'erreur: votre nom d'utilisateur et mot de passe ne correspond à aucun "? quand j'ai créé le compte et que c'est clair? C'est probablement quelque chose d'évident que j'ai manqué. Heres le code ...Aide PHP Login ne fonctionne pas correctement?

// Vérifiez si le formulaire a été soumis

if (isset ($ _ POST [ 'login'])) {

//Check if username and password are empty 
if ($_POST['username']!='' && $_POST['password']!='') 
{  
    //Create query to check username and password to database 
    $validate_user = $mysqli->query('SELECT id, username, password, active FROM users WHERE ="'.$mysqli->real_escape_string(md5($_POST['username'])).' AND password = "'.$mysqli->real_escape_string(md5($_POST['password'])).'"'); 

    //We check if the query returns true 
    if ($validate_user->num_rows == 1) 
    { 
     $row = $validate_user->fetch_assoc(); 

     //Check if the user has activated there account 
     if ($row['activated'] == 1) 
     { 
      $_SESSION['id'] = $row['id']; 
      $_SESSION['logged_in'] = true; 
      Header('Location: ../main/index.php'); 
     } 
     //Show this error if activation returns as 0 
     else { 
      $error = '<p class="error">Please activate your account.</p>'; 
     } 
    } 
     //Show this error if the details matched any in the db 
     else {  
      $error = '<p class="error">Your username and password are not in our database!</p>';   
     } 
    } 
     //Show this error if the username and password field have not been entered 
     else { 
      $error = '<p class="error">Please enter your username and password.</p>'; 
     } 

}

+0

Sous quelle forme conservez-vous les mots de passe dans votre base de données? Gardez-vous les deux - nom d'utilisateur et mot de passe md5 hashed? Parce que c'est ce que votre script attend. – jayarjo

+0

Non, je ne t'ai pas. Ha stupide moi, merci, je suppose que c'est parce que je ne hash ushames dans DB mais tente d'ici. –

+0

Hmm je semble avoir corrigé en supprimant le "md5()" de la requête de nom d'utilisateur .... mais toujours la même erreur ... –

Répondre

3

Votre requête, simplifiée, ressemble à:

SELECT ID, nom d'utilisateur, mot de passe, actif FROM utilisateurs WHERE = "'. Md5 (< nom d'utilisateur >).' AND password = « » .md5 (< mot de passe >). '"')

Je suis sûr qu'il devrait être:

SELECT id, nom d'utilisateur, mot de passe, actif FROM utilisateurs WHERE nom d'utilisateur =" '. < nom d'utilisateur >. ' AND password = « » .md5 (< mot de passe >). '"')

+0

parfait! fait, merci des erreurs stupides, désolé :) –

2

La ligne:

$validate_user = $mysqli->query('SELECT id, username, password, active FROM users WHERE ="'.$mysqli->real_escape_string(md5($_POST['username'])).' AND password = "'.$mysqli->real_escape_string(md5($_POST['password'])).'"'); 

devraient probablement:

$validate_user = $mysqli->query('SELECT id, username, password, active FROM users WHERE username ="'.$mysqli->real_escape_string(md5($_POST['username'])).' AND password = "'.$mysqli->real_escape_string(md5($_POST['password'])).'"'); 
+0

belle attraper mon pote – nik

2

La requête ne contient pas" nom d'utilisateur = "après la clause WHERE, il devrait donc probablement être:

$mysqli->query('SELECT id, username, password, active FROM users WHERE username ="'.$mysqli->real_escape_string(md5($_POST['username'])).' AND password = "'.$mysqli->real_escape_string(md5($_POST['password'])).'"'); 
+0

Merci d'avoir signalé cela lol –

Questions connexes