Codeigniter session-> userdata-> username не отображается после входа в систему - PullRequest
0 голосов
/ 25 октября 2018

Я не знаю, что делать, мое имя пользователя не отображается при каждом входе в систему ... Я имею в виду, я мог войти в систему отлично, но мое имя пользователя не отображается ...

Просмотр: Home.php

<li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
       <?php echo $this->session->userdata("username");?>
       Member<span class="caret"></span></a>
    <ul class="dropdown-menu">

Контроллер: Login / loginMember.php

$this->form_validation->set_rules('username','Username','required');
$this->form_validation->set_rules('password','Password','required');
if ($this->form_validation->run($this) == FALSE) {
    $this->load->view('front/login');
} else {
    //enter username and password
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $this->load->model('Member_model');
    $member = $this->Member_model->checkLogin($username, $password);
    if (!$member) {
       $data_session = array(
            'username' => $member->username,                
           'logged_in' => true);
       $this->session->set_userdata($data_session);
       //redirect
       redirect('Member/profile');
     } else {
         print_r('User doesnt exist');
     }
}

** Модель: Member_model / checkLogin.php

$this->db->select('password');
$this->db->from('member');
$this->db->where(array('username' => $username, 'password'=> $password));
$hash = $this->db->get()->row('password');
return $this->verify_password_hash($password, $hash);
if ($hash->num_rows() > 0) { 
    return $hash->row_array();
} else { 
    return FALSE; 
}

Вид всегда такой: username on home

Элемент в имени изображения не имя пользователя, а слово, которое я пишу после

<?php echo $this->session->userdata("username");?> 

чтобы оно не стало нулевым и не объединялось в другом меню

Ответы [ 4 ]

0 голосов
/ 28 октября 2018

Сначала убедитесь, что ваша set_session работает нормально или нет.используя all_userdata (), вы можете перепроверить текущие данные сеанса.

, пожалуйста, используйте этот код и дайте мне знать, какие данные хранятся в сеансе.

echo "<pre>";
print_r($this->session->all_userdata());

Он будет печатать все данные сеанса.

0 голосов
/ 25 октября 2018

Пожалуйста, установите session_userdata следующим образом:

$data_session = array(
            'username' => $member->username,                
           'logged_in' => true);
       $this->session->set_userdata('data_session',$data_session);

И затем используйте его следующим образом:

$session_data = $this->session->userdata('data_session');
    $username= $session_data['username'];
    $logged_in= $session_data['logged_in'];

Я надеюсь, что он будет работать для вас.

0 голосов
/ 26 октября 2018

Ваш контроллер и модель не согласованы

Внутри контроллера вы используете $ member-> username, но в модели вы используете $ hash-> row_array ()

row_array () вернетассоциативный массив, поэтому вам нужно обращаться к $ member ['username']

, используя $ hash-> row (), если вы хотите использовать объект и обращаться к нему с помощью $ member-> username


Я не уверен, почему вы не видели ошибку в вашей системе разработки, ваш код должен показывать некоторую ошибку, если вы разрешаете ошибку. В целях разработки вы должны включить отчеты об ошибках PHP, чтобы вы могли ошибаться какэто было бы легче отследить.

0 голосов
/ 25 октября 2018

Попробуйте проверить $member, если на нем есть username данные.

Или

Может быть, вы могли бы просто использовать $username из $username = $this->input->post('username');, хотя я неЯ вполне уверен, есть ли какие-либо проблемы с безопасностью при таком подходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...