2012-03-22 71 views
3

所以,我有一个名为'会员'的集合,并且我有我的每个'成员'的用户名和密码。 我需要知道的是我怎么检查,看看两者是否匹配,即用户名+密码=成功简单的PHP mongoDB用户名和密码检查网站

这是我曾尝试并正确进行搜索,只是它没有返回错误,如果没有用户

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); 

    } 

回答

3

事情是这样的:

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

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

或者:

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

感谢芽,我怎么什么限制返回得到,我只想有_id数量和@RussellHarrower你可以使用'findOne'或'limit'姓氏和名字 – RussellHarrower 2012-03-22 21:49:56

+0

。检查更新。 – Ben 2012-03-22 22:01:30

4

假设一个用户名/密码组合是唯一的,你可以使用一个findOne

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

如果你想限制回来某些字段中的数据,你可以在findOne结束指定它们:

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

@RussellHarrower仅供参考,我做了一个编辑,以帮助您找回_id,名和姓。 – Aaron 2012-03-23 13:58:54