Codeigniter-логин с сессии - PullRequest
       29

Codeigniter-логин с сессии

0 голосов
/ 03 мая 2020

Я пытаюсь выполнить вход в систему с помощью сеансов, но, похоже, это не работает, поскольку при входе в систему данные сеанса не отображаются. после входа в систему должно появиться что-то вроде: «Добро пожаловать, Джон», но это не так. В чем может быть проблема

контроллер fn

function login_user()
    {
        if(isset($_POST['login']))
        {

        $data = $this->Model_students->fetchUserData();

            if(!empty($data))
            {
                var_dump($data);
                foreach ($data as $key => $value) :
                    $user_id = $value->id;
                    $firstname = $value->firstname;
                    $lastname = $value->lastname;
                    $grade = $value->grade;
                    $email = $value->email;
                    $images = json_decode($value->userfile);
                endforeach;

                $user_info = array(
                    'id' => $user_id,
                    'firstname' => $firstname,
                    'lastname' => $lastname,
                    'grade' => $grade,
                    'email' => $email,
                    'images' => $images[0]->file_name,
                    'is_logged_in' => TRUE
                    );

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

                redirect('Students/homepage');
            }
            else
            {
                $this->session->set_flashdata('error', 'Error! Invalid username or password');
                redirect('Students/login_user');
            }
        }
        else
        {
            $this->load->view('signup');
        }
    }

модель соединение здесь для другой таблицы в том же БД, где общий строка является идентификатором..не уверен, что соединение тоже корректно

public function fetchUserData()
    {
        $this->db->select('users.*, user_images.*');
        $this->db->from('users');
        $this->db->join('user_images', 'users.id=user_images.user', 'inner');
        $this->db->where('email', $this->input->post('email'));
        $this->db->where('password', md5($this->input->post('password')));
        $query = $this->db->get();

        if($query->num_rows() == 1 ) :
            foreach($query->result() as $row):
                $data[] = $row;
            endforeach;
            return $data;
        endif;
    }

view img scr здесь должно отображать изображение пользователя на основе того, что сохранено в БД, когда он / она впервые зарегистрирован

</head>

<body>



<h3>Welcome  <?php $this->session->userdata('$firstname')?>.</h3>;
<a href=""> <img class ="img-circle" src="<?=base_url();?>uploads/users/<?=$this->session->userdata('userfile/file_name');?>" width="250" height="auto"></a>

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

может быть много проблем с этим. 1: вы передаете переменную в строке, которая недопустима ($ this-> session-> userdata ('$ firstname')), удалите $ из имени; 2: в контроллере должен быть конструктор, чтобы сеанс мог быть вызван при создании объекта; надеюсь, это решит вашу проблему

0 голосов
/ 03 мая 2020

В ваших взглядах есть опечатка. где переменная сеанса должна быть без символа $.

<h3>Welcome  <?php echo $this->session->userdata('firstname'); ?>.</h3>;

Кроме того, проверьте, содержит ли $user_info ожидаемые данные. Сделайте var_dump($user_info) и посмотрите прямо перед созданием сеанса.

...