Codeigniter,不能进行会话?

时间:2016-02-18 07:51:49

标签: php mysql codeigniter session

我遇到了像my previous question一样的问题,现在我认为我的会话有问题,因为对我的数据库的查询工作正常,除了在此问题中进行会话。 那个错误说:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SET `last_activity` = 1455780614, `user_data` = 'a:4:{s:9:\"user_data\";s:0:\"\"' at line 1

UPDATE SET `last_activity` = 1455780614, `user_data` = 'a:4:{s:9:\"user_data\";s:0:\"\";s:9:\"logged_in\";s:12:\"Sudah Loggin\";s:3:\"nip\";s:8:\"21212121\";s:5:\"akses\";s:4:\"user\";}' WHERE `session_id` = '2e72650df8541dcc3334394cfb7eef37'

Filename: libraries/Session.php

Line Number: 306

在我自动加载会话并插入加密密钥后发生这种情况。这是我的控制者:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Auth extends CI_Controller {

    public function __construct(){
        parent::__construct();
        $this->load->model('user_m');
    }
    public function index() {
        $this->load->view('login');
    }

    public function cek_login() {
        $data = array('nip' => $this->input->post('nip', TRUE),
                        'password' => $this->input->post('password', TRUE)
            );

        $hasil = $this->user_m->cek_user($data);
        if ($hasil->num_rows()==1) {
            foreach ($hasil->result() as $sess) {
                $sess_data['logged_in'] = 'Sudah Loggin';
                $sess_data['nip'] = $sess->nip;
                $sess_data['akses'] = $sess->akses;
                $this->session->set_userdata($sess_data);
            }

            if ($this->session->userdata('akses')=='admin') {
                redirect('admin');
            }
            elseif ($this->session->userdata('akses')=='member') {
                redirect('user');
            }       
        }
        else {
            echo "<script>alert('Gagal login: Cek nip, password!');history.go(-1);</script>";
        }
    }

}

?>

这是我的模特:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

    class User_m extends CI_Model {
        public function cek_user($data) {
            $query = $this->db->get_where('pegawai', $data);
            return $query;      
        }

    }

?>

我这样做是为了进行多用户登录,但无法进行会话。 我正在为此项目使用 XAMPP 7.0.2 Codeigniter 3.0.4

4 个答案:

答案 0 :(得分:0)

                $sess_data['logged_in'] = 'Sudah Loggin';
                $sess_data['nip'] = $sess->nip;
                $sess_data['akses'] = $sess->akses;
                $this->session->set_userdata($sess_data);


change this to given way

     $sess_data = array(
                   'logged_in'  => 'Sudah Loggin',
                   'nip'     => $sess->nip,
                   'akses' =>  $sess->akses
               );

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

答案 1 :(得分:0)

参考此代码

public function login()
{
    $this->load->library('session');
    $a      =   $this->input->post('email');
    $b      =   trim($this->input->post('password'));
    $b1     =   md5($b);
    $c      =   1;
    $data   =   $this->userdata->userlogin($a,$b1,$c);
    if($data)
    {
        echo true;
        foreach ($data as $login)
        {
            $uid=$this->session->set_userdata('logId',$login->usr_id);
        }
    }
    else
    {
        echo "Invalid username or password..!!!!";
        $a=$this->input->post('email');
    }
}

答案 2 :(得分:0)

对不起,我找到了问题的答案...... 在我尝试再次下载最新的Codeigniter,并在我的项目中替换它,并重新配置我的项目后,我的查询被读取并成功执行,但会话没有。所以我试着调试我的代码2天,我发现(大约15分钟前)我的控制器中有一些奇怪的管理员/用户,没有<?php defined('BASEPATH') OR exit('No direct script access allowed');而是<?php session_start();所以我改变它,问题解决了。哦,如果有人发现:

  

库/ session.php文件

删除它!

这是我遇到此错误的第一个原因:

  

错误号:1064您的SQL语法出错;检查   与您的MariaDB服务器版本对应的手册   在'WHERE nip ='21212121'和密码='用户''附近使用的语法   第2行SELECT * WHERE nip ='21212121'AND password ='user'文件名:   C:/xampp/htdocs/simpeg/application/models/User_m.php行号:7

感谢所有帮助过我的人......:D

答案 3 :(得分:0)

错误号码:1064

我在这工作了5个多小时。 没有会话登录,所有功能都正常工作,但登录和会话有问题。 最后我用最新的CI 3.1更改了我的系统文件夹。 刚打开 https://codeigniter.com/download

下载完整的CI3.x并从中提取复制系统文件夹,并将系统文件夹替换为您之前的系统文件夹。 请保留以前系统文件夹的备份以供参考。