【问题标题】:if else is not working如果其他不工作
【发布时间】:2014-03-01 18:59:33
【问题描述】:

型号:

function validate()
    {   
        $this->db->where('username',$this->input->post('username'));
        $this->db->where('password',md5($this->input->post('password')));
        $query = $this->db->get('memberships');
        if($query->num_rows() == 1)
        {
            return TRUE;
        }
    }
    function validate_admin()
    {   
        $this->db->where('adminname',$this->input->post('username'));
        $this->db->where('password',md5($this->input->post('password')));
        $query = $this->db->get('admin');
        if($query->num_rows() == 1)
        {
            return TRUE;
        }   
    }

控制器

function validate_credentials()
    {
    $this->load->model('membership_model');

        if($this->membership_model->validate())
        {
        $this->db->where('username',$this->input->post('username'));
        $get_profile_info = $this->db->get('memberships');
        if($get_profile_info->num_rows() > 0){
            foreach ($get_profile_info->result() as $row)
        {
            $info = array('firstname' => $row->firstname,
                            'lastname' => $row->lastname,
                            'email_address' => $row->email_address
                            );
        }
            $data = array(  
                'username' => $this->input->post('username'),
                'password' => $this->input->post('password'),
                'firstname' => $info['firstname'],
                'lastname' => $info['lastname'],
                'email_address' => $info['email_address'],
                'is_logged_in' => true
                );  
            $this->session->set_userdata($data);
            redirect('/site/main_menu');
        }}
        else if($this->membership_model->validate_admin())
        {
            echo "admin";
        }
        else
        {
            redirect('login');
        }
    }

if else if 语句不能正常工作。程序测试第一个条件,如果它返回 false,则跳过第二个条件,即使它是 TRUE 并执行 else 语句。我不确定这里发生了什么。

【问题讨论】:

  • 在每次验证时尝试 var_dump ,如果没有看到你得到 TRUE 并将 else if 设为 elseif

标签: php codeigniter if-statement


【解决方案1】:
  • 将您的一种控制器方法重构为不同的方法 - 一种用于成员,另一种用于管理员启动。并且因为您正在调用单独的数据库表,所以建议为每个表使用单独的模型。
  • 因为您正在与获取配置文件信息的数据库表进行交互,所以应该在模型(而不是控制器)中进行。
  • 这是个人喜好,但我也会在模型中设置会话数据。您的 foreach 也可能存在问题,然后获取值 $info['first name']。
  • 在发送到数据库之前先验证表单数据。它更安全,对您的用户更好 - 如果他们忘记输入密码,您想再次向他们展示表单并提供有用的信息。 http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

并在有疑问时记住 - 回显它。

【讨论】:

    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    相关资源
    最近更新 更多