0

以下のコードイグナイターコードでは、コントローラーとビューパーツを配置しました。非アクティブなユーザーがアカウントをログに記録しようとすると、ログインフォームとともにアクティブなユーザーに表示されるはずです。私の場合、メッセージはログインせずに表示され、最終的にログインフォームが消えます。コントローラ:

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'); ?>
4

3 に答える 3

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'); ?>
于 2013-12-12T18:12:13.820 に答える
0

ここで最も明白な (考えられる) 間違いは、投稿したデータを に渡さないことです$this->membership_model->validate();。あなたはその関数にコードを投稿していないので、100% 確信はできませんが、これが問題であることは間違いありません。情報が渡されないため、$query変数が適切に設定されていないため、エラーが表示されます。

于 2013-11-14T14:16:22.363 に答える