Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用Codeigniter MVC系统通过AJAX传递登录信息_Php_Html_Ajax_Codeigniter - Fatal编程技术网

Php 无法使用Codeigniter MVC系统通过AJAX传递登录信息

Php 无法使用Codeigniter MVC系统通过AJAX传递登录信息,php,html,ajax,codeigniter,Php,Html,Ajax,Codeigniter,下午好 我正在寻找一些关于Codeigniter的建议,并获得一个Ajax登录表单,以便与我的控制器一起工作,在成功登录后,将我带到特定用户的仪表板/主屏幕 以下是我的“auth.php”控制器代码: class Auth extends CI_Controller { function __construct() { parent::__construct(); $this->load->model('data_model'); $this->load

下午好

我正在寻找一些关于Codeigniter的建议,并获得一个Ajax登录表单,以便与我的控制器一起工作,在成功登录后,将我带到特定用户的仪表板/主屏幕

以下是我的“auth.php”控制器代码:

class Auth extends CI_Controller {
function __construct() {
    parent::__construct();
    $this->load->model('data_model');
    $this->load->database();
}

//** Check Status & Redirect To Login **//

public function index() {
    if($this->session->userdata('admin_login') == 1)
        redirect(base_url() . 'admin/dashboard', 'refresh' );
    else if($this->session->userdata('staff_login') == 1)
        redirect(base_url() . 'staff/dashboard', 'refresh' );
    else if($this->session->userdata('client_login') == 1)
        redirect(base_url() . 'client/dashboard', 'refresh' );

    $this->load->view('login');
}

//** Login Function **//

function ajax_login() {
    $response = array();

    //** Credentials of user login **//
    $email = $_POST["email"];
    $password = $_POST["password"];
    $response['submitted_data'] = $_POST;

    //** Validating the login **//
    $login_status = $this->validate_login($email, $password);
    $response['login_status'] = $login_status;
    if ($login_status == 'success') {
        $response['redirect_url'] = $this->session->userdata('last_page');
    }
}

//** Validating Credentials **//

function validate_login($email = '' , $password = '') {
    $credentials = array('email' => $email, 'password' => sha1($password));

    //** Checking Admin Credentials **//
    $query = $this->db->get_where('admin', $credentials);
    if ($query->num_rows() > 0) {
        $row = $query->row();
            $this->session->set_userdata('admin_login', '1');
            $this->session->set_userdata('login_user_id', $row->admin_id);
            $this->session->set_userdata('name', $row->name);
            $this->session->set_userdata('login_type', 'admin');
            return 'success';
    }
&这是我的login.php视图

<div class="login-container">

    <div class="row">

        <div class="col-sm-6">

<script type="text/javascript">
                jQuery(document).ready(function($)
                {
                    // Reveal Login form
                    setTimeout(function(){ $(".fade-in-effect").addClass('in'); }, 1);


                    // Validation and Ajax action
                    $("form#login").validate({
                        rules: {
                            email: {
                                required: true
                            },

                            password: {
                                required: true
                            }
                        },

                        messages: {
                            email: {
                                required: 'Please enter your email.'
                            },

                            password: {
                                required: 'Please enter your password.'
                            }
                        },

                        // Form Processing via AJAX
                        submitHandler: function(form)
                        {                                                               
                            $.ajax({
                                url: "auth/validate_login",
                                method: 'POST',
                                dataType: 'json',
                                data: {
                                    do_login: true,
                                    email: $(form).find('#email').val(),
                                    password: $(form).find('#password').val(),
                                },
                                success: function(resp)
                                {
                                    show_loading_bar({
                                        delay: .5,
                                        pct: 100,
                                        finish: function(){

                                            // Redirect after successful login page (when progress bar reaches 100%)
                                            if(resp.accessGranted)
                                            {
                                                window.location.href = 'auth/index';
                                            }
                                                                                        else
                                            {
                                                toastr.error("You have entered wrong password, please try again. User and password is <strong>demo/demo</strong> :)", "Invalid Login!", opts);
                                                $passwd.select();
                                            }
                                                                                    }
                                    });

                                                                    }
                            });

                        }
                    });

                    // Set Form focus
                    $("form#login .form-group:has(.form-control):first .form-control").focus();
                });
            </script>

            <!-- Errors container -->
            <div class="errors-container">


            </div>

            <!-- Add class "fade-in-effect" for login form effect -->
            <form method="post" role="form" id="login" class="login-form fade-in-effect">

                <div class="login-header">
                        <img src="<?php echo base_url();?>assets/images/logo@2x.png" alt="" width="80" />
                        <span>log in</span>
                    </a>

                    <p>Dear user, log in to access your user area!</p>
                </div>


                <div class="form-group">
                    <label class="control-label" for="username">Username</label>
                    <input type="text" class="form-control input-dark" name="email" id="email" placeholder="Email" data-mask="email" />
                </div>

                <div class="form-group">
                    <label class="control-label" for="passwd">Password</label>
                    <input type="password" class="form-control input-dark" name="password" id="password" placeholder="Password" />
                </div>

                <div class="form-group">
                    <button type="submit" class="btn btn-dark  btn-block text-left">
                        Log In
                    </button>
                </div>

                <div class="login-footer">
                    <a href="<?php echo base_url();?>auth/forgot_password">Forgot your password?</a>

                </div>

            </form>

jQuery(文档).ready(函数($)
{
//显示登录表单
setTimeout(函数(){$(“.fade-in-effect”).addClass('in');},1);
//验证和Ajax操作
$(“表单#登录”)。验证({
规则:{
电邮:{
必填项:true
},
密码:{
必填项:true
}
},
信息:{
电邮:{
必填项:“请输入您的电子邮件。”
},
密码:{
必需:“请输入您的密码。”
}
},
//通过AJAX进行表单处理
submitHandler:函数(表单)
{                                                               
$.ajax({
url:“验证/验证\登录”,
方法:“POST”,
数据类型:“json”,
数据:{
do_登录:正确,
电子邮件:$(表单).find('#email').val(),
密码:$(表单).find('#password').val(),
},
成功:功能(resp)
{
显示加载条({
延迟:.5,
百分之一百,
完成:函数(){
//成功登录页面后重定向(当进度条达到100%时)
如果(分别授予访问权)
{
window.location.href='auth/index';
}
其他的
{
toastr.error(“您输入了错误的密码,请重试。用户和密码为demo/demo:),“无效登录!”,选项);
$passwd.select();
}
}
});
}
});
}
});
//设置窗体焦点
$(“form#login.form组:has(.form-control):first.form-control”).focus();
});
资产/图像/logo@2x.png“alt=”“width=“80”/>
登录
尊敬的用户,请登录以访问您的用户区域

用户名 暗语 登录
从上面的代码中,我声明了一个模型,但它实际上并不包含任何信息,因为我的控制器中有一个get DB。希望有人能对此有所了解

谢谢大家!


Zak Hargreaves。

CodeIgniter希望CSRF令牌值与表单数据一起传递。它包含在一个隐藏的表单输入中,当您使用CodeIgniter的
form\u open()
函数时会自动构造该表单输入。然后当您使用
ajax()时
,您必须包含此隐藏CSRF字段的值。您的浏览器控制台应该向您显示对
ajax()的某种错误响应
request。当我进入控制台并尝试登录时,我通常会得到一个POST ok,它会传递给我的控制器-这不是查询数据库-我觉得我遗漏了什么。任何其他帮助都会很棒。我仔细查看了你的代码,我认为你需要从头到尾阅读CodeIgniter文档。我没有尝试意思是说。当我学习CI时,我也做了同样的事情……我完整地阅读了手册,并执行了所有包含的练习、示例和教程。做每件事只需要3到4个小时。你的代码有什么问题?你没有使用CI模型连接到数据库,而是调用了CI Cont中的另一个函数这是完全错误的。您永远不会让一个控制器函数调用另一个控制器函数。请参阅:但是,您的根本问题是您没有从PHP向
ajax()
函数输出任何内容。您需要
回显响应。