显示警报消息时没有登录表单

时间:2013-11-14 11:26:32

标签: php codeigniter

在下面的codeigniter代码中,我已经放置了控制器和视图部分。现在,如果非活动状态尝试记录帐户,它应该在活动用户中显示以及登录表单。在我的情况下,消息显示没有登录,最后登录表单消失。 控制器:

function index()
    {
        $data['main_content'] = 'login_form';
        $this->load->view('includes/template', $data);      
    }
    function inactive()
    {
    echo"<script>alert('In active user');</script>";
    }

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

        if($query) // if the user's credentials validated...
        {
            $data = array(
                'username' => $this->input->post('username'),
                'is_logged_in' => true
            );
            if($query->num_rows()>0){
             $status = $query->row()->account_status;}
            else {
             $status = ''; }
            if($status == 'active')
            {
               $this->session->set_userdata($data);
               redirect('site1/members_area');
            }
            else //Account In active
            {  $this->inactive();  }
        }
        else // incorrect username or password
        {
            $this->index();
        }
    }   

视图:

<?php $this->load->view('includes/header'); ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/style1.css"  />
<div id="login_form">

    <h1>Login!</h1>
    <?php 
    echo form_open('login/validate_credentials');
    echo form_input('username', 'Username');
    echo form_password('password', 'Password');
    echo form_submit('submit', 'Login');
    echo anchor('login/signup', 'Create Account');
    echo form_close();
    ?>

</div><!-- end login_form-->


<?php $this->load->view('includes/footer'); ?>

3 个答案:

答案 0 :(得分:1)

我无法在控制器的inactive()中看到您调用视图文件的位置

  function inactive()
    {
    echo"<script>alert('In active user');</script>";
     $this->load->view('Your view with login form'); // this part
    }

答案 1 :(得分:0)

此处最明显(可能)的错误是您未将发布的数据传递给$this->membership_model->validate();。由于你没有将代码发布到该函数,我不能100%肯定,但我愿意打赌这是问题所在。信息未传递,因此$query变量未正确设置,因此显示错误。

答案 2 :(得分:0)

你为什么不试试这个:

function index($inactive_login = FALSE) {
    $data['inactive_login'] = $inactive_login;
    $data['main_content'] = 'login_form';
    $this->load->view('includes/template', $data);
}

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

    if($query) // if the user's credentials validated...
    {
        $data = array(
            'username' => $this->input->post('username'),
            'is_logged_in' => true
        );
        if($query->num_rows()>0){
         $status = $query->row()->account_status;}
        else {
         $status = ''; }
        if($status == 'active')
        {
           $this->session->set_userdata($data);
           redirect('site1/members_area');
        }
        else //Account In active
        { 
            $inactive_login = TRUE;
            $this->index($inactive_login);  
        }
    }
    else // incorrect username or password
    {
        $this->index();
    }
}

查看:

<?php $this->load->view('includes/header'); ?>
<?php 
    if($inactive_login){
        echo "<script>alert('In active user');</script>";
    }
?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/style1.css"  />
<div id="login_form">

<h1>Login!</h1>
<?php 
    echo form_open('login/validate_credentials');
    echo form_input('username', 'Username');
    echo form_password('password', 'Password');
    echo form_submit('submit', 'Login');
    echo anchor('login/signup', 'Create Account');
    echo form_close();
?>
</div><!-- end login_form-->
<?php $this->load->view('includes/footer'); ?>