如何从CodeIgniter修复非法偏移类型?

时间:2017-06-28 21:38:07

标签: codeigniter webix

  

遇到PHP错误

     

严重性:警告

     

消息:非法偏移类型

     

文件名:Session / Session.php

     

行号:799

     

回溯:

     

文件:/var/www/html/storelte/application/controllers/Login.php行:   16功能:set_userdata文件:/var/www/html/storelte/index.php行:   315功能:require_once

我想用Webix登录,但它总是返回此错误。我的控制器和ajax看起来像这样:

function do_login(){        
    $usuario = $this->sistema_usuarios_model->login($this->input->post('usuario'),$this->input->post('contrasena'));
    if($usuario){
        $this->session->set_userdata('a');
        $success = array('status'=>1,'message'=>'Bienvenido '.$usuario->usuario);
    }else
        $success = array('status'=>0,'message'=>'Usuario o contraseña incorrecto');

    $this->json($success);

AJAX

function login(){
    var form = $$('login_form');
    if (form.validate()){
        webix.ajax().post(_URL_LOGIN, form.getValues(), function(response){
            console.log(response)
            response = JSON.parse(response);
            webix.alert({
                text:response.message,
                callback:function(){
                    if(response.status)
                        document.location = '<?= base_url('index.php/menu')?>';
                }
            });

        });
    }else{
        webix.alert('Ingrese usuario y contraseña');
    }
}

1 个答案:

答案 0 :(得分:0)

如果您阅读了CodeIgniter documentation,则会发现set_userdata()需要一个数组。

在您的代码中,您将字符串传递给方法:

$this->session->set_userdata('a'); // 'a' is a string which causes the error

您应该将数组传递给该方法。来自文档:

$newdata = array(
    'username'  => 'johndoe',
    'email'     => 'johndoe@some-site.com',
    'logged_in' => TRUE
);

$this->session->set_userdata($newdata);

我不知道'a'字符串代表什么,但你应该传递一组值。 也许,这样的事情:

$data = array(
    'a' => true,
);
$this->session->set_userdata($data);

但是,我建议使用更多描述变量名而不是&#39; a&#39;。