Codeigniter Active记录帐户验证

时间:2014-09-25 01:40:18

标签: php mysql sql codeigniter

我有以下代码:

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个登录页面,它首先检查输入的帐户是否存在于admin表中,如果没有,则检查它是否存在于用户表中。如果输入的帐户不属于2个表,则返回false。

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

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

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

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

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

此外,我想阅读一些专业人士关于如何查看帐户的意见,或者我应该为用户和管理员制作2个登录页面。

2 个答案:

答案 0 :(得分:0)

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

如果输入的是UseRname,并且在数据库中它是Username,那么这是理想的。 但是,无论如何,要在查询中添加它吗?

get_where();喜欢限制等。

答案 1 :(得分:-1)

兄弟你犯了1个大错误,但是把它命名为role 检查1用户2管理员

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

default :
return 'bad role'
break;
}}