2010-02-16 5 views
3

J'essaie de connecter un utilisateur dans le cadre d'une forme soumettre, mais pourquoi est-ce qui suit ne fonctionne pas:6 log par programmation drupal utilisateur dans

$user = db_fetch_object(db_query("SELECT * FROM users WHERE mail = '%s' AND pass = '%s'", $mail, md5($pass))); 

if ($user) { 
    // Authenticate user and log in 
    $params = array(
     'name' => $user->name, 
     'pass' => trim($user->pass) 
    ); 

    // Authenticate user  
    $account = user_authenticate($params); 
} 

si je vide $ utilisateur je peux voir la bonne valeurs, mais si je vide le compte, il est vide.

Répondre

4

Vous passez le mot de passe hachés'user_authenticate() ', tandis que la fonction attend le mot de passe clair (il ne se hachage indirectement lors du chargement du compte via ´user_load()´).

Donc changer votre $ params déclaration de tableau à

$params = array(
    'name' => $user->name, 
    'pass' => $pass 
); 

devrait rendre votre travail par exemple.


BTW, vous pouvez utiliser user_load() vous pour éviter d'interroger la base de données directement:

$user = user_load(array('mail' => $mail, 'pass' => trim($pass), 'status' => 1)); 

(Le 'status' => 1 limitera les résultats aux utilisateurs actifs - vous pouvez laisser que dehors, bien sûr, si vous avez vraiment voulez autoriser les connexions aux comptes désactivés;)

Questions connexes