php
2009-07-08 5 views 0 likes 
0
function procLogin($username,$password){ 

    $query = "SELECT * 
         FROM members 
         WHERE login = '".mysql_escape_string($username)."' 
         AND passwd = '".mysql_escape_string($password)."'"; 
     $result = mysql_query($query); 


     //$values = array(); 
     while($row = mysql_fetch_array($result)) 
     { 
       return 'gg'; 
       return(array($row['member_id'])); 
     } 



} 

Pas en mesure d'obtenir le champ userlevel .... ni quoi que ce soit ....retour de connexion PHP valeurs

Répondre

1

return (array ($ row ['member_id']));

Attend mal - il devrait être:

retour ($ row [ 'MEMBER_ID']);

Vous ne devriez pas avoir besoin de définir le tableau dans le retour comme ça. Vous utiliserez aussi mysql_fetch_array() qui retourne sous la forme d'un index numérique - la fonction que vous voulez probablement est mysql_fetch_assoc qui est beaucoup plus agréable à utiliser car elle retourne les valeurs avec les clés comme nom de colonne plutôt qu'un index numérique.

est ici encore avec quelques hauts bien rangé:

function procLogin($username,$password){ 
    $query = "SELECT * 
     FROM members 
     WHERE login = '".mysql_escape_string($username)."' 
     AND passwd = '".mysql_escape_string($password)."'"; 
    $result = mysql_query($query); 

    $row = mysql_fetch_assoc($result); 

    if ($row['member_id'] > 0) 
    { 
     return ($row['member_id']); 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

Je reçois la valeur de retour comme false, bien que le niveau d'utilisateur ait une valeur pour l'utilisateur actuel qui est cochée. – Kevin

4

Je ne sais pas exactement ce que votre question est, mais un problème est que vous êtes return de ing au sein de cette boucle while:

while($row = mysql_fetch_array($result)) 
{ 
    return 'gg'; 
    return(array($row['member_id'])); 
} 

en fait, vous retournez deux fois à partir de la boucle ... alors la fonction procLogin() retourne toujours une valeur de « gg », à moins que quelque chose va mal avec votre SQL question.

En général, vous devriez éviter les instructions return dans n'importe quelle boucle, car cela crée de la confusion et peut conduire à des résultats inattendus.

+0

Il est également inutile d'avoir ceci dans une boucle while. Un simple si sur la valeur de $ row suffirait. – MitMaro

+0

Comment obtenir le niveau d'utilisateur sans boucle while – Kevin

0

Alors, obtenez-vous un résultat? C'est-à-dire, va-t-il réellement dans la boucle while?

J'utiliserais un appel de fonction mysql_error() directement après l'appel de mysql_query pour voir si quelque chose s'est mal passé.

Peut-être qu'aucune connexion n'a été établie, par exemple.

1

Je pense, en fonction de vos commentaires au sujet de la userlevel, que vous voulez retourner le tableau entier plutôt que le member_id? Voici une légère modification à la réponse de Meep3D ci-dessus:

function procLogin($username,$password){ 
    $query = "SELECT * 
     FROM members 
     WHERE login = '".mysql_escape_string($username)."' 
     AND passwd = '".mysql_escape_string($password)."'"; 
    $result = mysql_query($query); 

    $row = mysql_fetch_assoc($result); 

    if (mysql_num_rows($result) > 0) 
    { 
     $row = mysql_fetch_assoc($result); 
     return $row; 
    } 
    else 
    { 
     return false; 
    } 
} 

Cela devrait retourner un tableau de toutes vos colonnes de table, si vous êtes à la recherche de la userlevel, sans doute, vous devriez être en mesure de quelque chose comme l'accès:

$loginInfo = procLogin("theband","password1"); 
//if ($loginInfo) or something similar here 
$level = $loginInfo['userlevel']; 
+0

Je n'ai pas besoin de toutes les informations, juste le niveau d'utilisateur de l'utilisateur en cours de vérification. Aussi votre code retourne aussi faux ... – Kevin

+0

Il suffit donc de retourner le niveau utilisateur: return $ row ['userlevel']; Etes-vous sûr que vous obtenez le résultat attendu de la base de données? –

0

Avez-vous encore des problèmes? Dans ce cas essayer quelque chose comme:

echo $query; 

après avoir défini la requête, puis copier + coller dans phpMyAdmin pour vérifier s'il y a des déclarations valides de la base de données.

Après cela essayer de placer:

if (mysql_error()) 
{ 
    trigger_error ("MySQL Error: ". mysql_error(), E_USER_ERROR); 
} 

Juste après que vous appelez mysql_query. Cela devrait déclencher une erreur s'il y en a une qui vous donne des détails sur ce qui s'est mal passé.

+0

Il a été résolu, le problème était que je n'utilisais pas MD5 pour crypter. – Kevin

Questions connexes