2012-03-22 3 views
3

Donc, j'ai une collection appelée: «membres» et en ce que j'ai un nom d'utilisateur et mot de passe pour chacun de mes «membres». Ce que je dois savoir est comment puis-je vérifier pour voir si les deux correspondent-à-dire le nom d'utilisateur + mot de passe = succèsSimple PHP mongoDB Nom d'utilisateur et mot de passe Check pour le site

C'est ce que je l'ai essayé et il fait correctement la recherche, il suffit de ne revient pas l'erreur si aucun utilisateur

public function userlogin($data) 
    { 
     $this->data = $data; 
     $collection = $this->db->members; 
     // find everything in the collection 
     $cursor = $collection->find(array("username"=>$this->data['username'], "password"=>$this->data['password'])); 

     $test = array(); 
      // iterate through the results 
      while($cursor->hasNext()) { 
       $test[] = ($cursor->getNext()); 
      } 
     //Print Results 

     if($test == NULL) 
     { 
      print "Sorry we are not able to find you"; 
      die; 
     } 
     //print json_encode($test); 

    } 

Répondre

3

Quelque chose comme ceci:

$mongo = new Mongo(); 
$db = $mongo->dbname;  

$user = $db->collection->findOne(array("username" => $username, "password" => $password)); 
if ($user->count() > 0) 
    return $user; 
return null; 

Ou:

$user = $db->collection->findOne(array("username" => $username, "password" => $password)); 
$user->limit(1); 
if ($user->count(true) > 0) 
    return $user; 
return null; 
+0

bourgeon Merci, comment puis-je limiter ce que est renvoyée, je veux seulement là _id nombre et prénom et le nom – RussellHarrower

+0

@RussellHarrower vous pouvez utiliser '' findOne' ou limit'. Vérifiez la mise à jour. – Ben

4

Si l'on suppose qu'une combinaison nom d'utilisateur/mot de passe est unique, vous pouvez utiliser un findOne:

$mongoConn = new Mongo(); 
$database = $mongoConn->selectDB('myDatabase'); 
$collection = $database->selectCollection('members'); 
$user = $collection->findOne(array('username' => $username,'password' => $password)); 

Si vous souhaitez limiter les données à revenir à certains champs, vous pouvez les spécifier à la fin de la findOne:

$user = $collection->findOne(array('username' => $username,'password' => $password),array('_id','firstname','lastname')); 
+0

@RussellHarrower FYI, j'ai fait une modification pour vous aider à récupérer seulement _id, prénom et nom de famille. – Aaron

Questions connexes