0

ユーザーを確認するために、AJAX 経由でユーザー名とパスワードをデータベースに送信しようとしていますが、CI が単一の要求に対して重複したセッションを作成していることわかりますuserdataまた、スルーを設定しようとするとsession->set_userdata、データが設定されません。これは、firebug もセッション データベースもデータを表示しないため確認されています。また、セッションでデータが設定されていないため、AJAX 応答で表示される AJAX 応答で何も返されません。

ユーザー名パスワードの組み合わせが間違っていてもセッション Cookie が作成されるため、ここで何が間違っているのか教えてください。

モデル:

function validate_login()
{
    $this->db->where('Useremail',$this->input->post('username'));
    $this->db->where('Password',$this->input->post('password'));
    $result = $this->db->get('users');
    if ($result->num_rows == 1) {
        return true;
    }else{
        return false;
    }
}

コントローラ:

function validate_login_user()
{
    $this->load->model('data_model');

    if ($this->data_model->validate_login())
    {
        $data = array (
            'username' => $this->input->post('username'),
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        return = $this->session->userdata('username');
    }
    else
    {
        return false;
    }
}

私の見解:

<script>

    $(function() {

        $('.login').click(function(){
            var username = $('#username').attr('value');
            var password = $('#password').attr('value');
            if (username == "" || password == ""){
                $('.LoginErrormsg').css('display','block');
            }
            if (username !== "" && password !== ""){
                $.ajax({
                    url:"<?php echo site_url('home/validate_login_user');?>",
                    type:'POST',
                    data:{username:username,
                        password:password},
                    success:function(){
                        $('#sitelogin').html(msg);
                        $('.logout').css('display','block');
                    }
                });
                return false
            }else{
                return false;
            }
        });
    })

</script>

<div id="sitelogin">
    <input type="text" class="loginbox" name = "login_username" id = "username" placeholder="Email address / Username" />
    <input type="password" class="loginbox" name = "login_password" id="password" placeholder="Password" />
    <div class="LoginErrormsg">You forgot to enter Username and Password</div>
        <button class="login" name = "login">Login</button>
        <button class="logout" name = "logout">Logout</button>
    </div>
</div>
4

2 に答える 2

0

これを解決するには、 php または AJAX を使用してページをリロードする必要があります。

redirect()phpなら成功時に使えます。したがって、AJAX には戻りません。

AJAX を使用する場合window.location.replace("<?php echo base_url(); ?>index.php/controller/method");

于 2016-05-30T06:41:41.693 に答える