2014-09-25 161 views
0

我有以下代码:笨的活动记录帐户验证

MODEL:

function check_account($account_details){ 
     $query = $this->db->get_where('admin', array('username' => $account_details['username'] , 
                           'password' => $account_details['password']))->result_array(); 
     if(!empty($query)){ 
     return 'Admin'; 
     } 
     else{ 
     $query2 = $this->db->get_where('user_mst', array('username' => $account_details['username'], 
                        'password' => $account_details['password']))->result_array(); 
       if(!empty($query2)){ 
       return 'User'; 
       } 
       else return FALSE; 
     } 
    } 

我只贴我的模型,因为只查看用户名和密码,并在控制器由输入字段只检索输入的数据并传递给模型中的函数。上面的代码片段是控制器调用的函数。

我只有1个登录页面,它首先检查输入的帐户是否存在于管理表中,如果不存在,则检查它是否存在于用户表中。如果输入的帐户不属于2个表格,则返回false。

我首先检查了管理表,因为管理员中的帐户属于少数。而在用户中将是绝大多数大部分账户。例如,如果我有5个管理员帐户和1000个用户帐户。

而不是检查输入的帐户是否是这1000个之一,它首先检查它是否属于管理表中的5。

希望我的解释清楚或至少可以理解。

我的问题是,当我输入说,SampleAccount作为用户名,即使在数据库中所有在小盘股仍然会返回,就好像它是相同的。

SampleAccount(输入)= sampleaccount(数据库) - 不应在查询中返回。

而且,我想阅读一些专业对IM如何检查帐户,意见,或者我应该只是做既为用户和管理员2个登录页面。

回答

0
foreach($query as $arr => $result){ 
     if($account_details['username'] == $result['username']){ 
     echo ' equal'; 
     } 
     else echo ' not equal'; 
    } 

如果输入的是UseRname,并且在数据库中它是用户名,那么这是理想的。 但是,无论如何,在查询本身添加这个?

get_where();喜欢极限等

-1

兄弟,你有很大的错误使1台,但要coulmn命名为role 检查,如果用户1 2管理员

function premission_check($role){ 
switch($role){ 
case 1 : 
    return 'user'; 
break; 
case 2 : 
    return 'admin'; 
break; 

default : 
return 'bad role' 
break; 
}}