Я следую учебнику на YouTube о CodeIgniter .Учебное пособие опирается только на переменную $username
$_SESSION
и не затрагивает другие аспекты $_SESSION
s.В соответствии с документацией воспламенителя кода относительно $_SESSION
вы можете просто вызвать сеанс super global с помощью ключа.Вот здесь и начинается моя проблема.
VAR_DUMP($_SESSION)
a var_dump
из $ _Session предоставляет следующую информацию (я обрезал другие поля, чтобы она была короче)
array (size=5)
'__ci_last_regenerate' => int 1526800056
'' => null
'userID' =>
array (size=1)
0 =>
array (size=14)
'userID' => string '1' (length=1)
'firstname' => string 'Tim' (length=3)
'lastname' => string 'Coetzee' (length=7)
'pword' => string 'xyz' (length=4)
'email' => string 'someone@gmail.com' (length=17)
Что я хочу сделать
Я просто хочу иметь возможность назвать $_SESSION
суперглобальный как таковой $_SESSION['email']
или $_SESSION['userID']
.Я хочу получить доступ к VAR сессий ТОЧНО, так как вы должны делать это в соответствии с документами, поэтому я считаю, что моя проблема в контроллере () или в способе установки данных сеанса (), как можно увидеть ниже
Проблема
Допустим, я хочу отобразить userID
сверху var_dump()
информацию в виде, как тест, я делаю следующее ... echo $_SESSION['userID'];
Вышеприведенное приводит к ошибке
Сообщение: объект класса stdClass не может быть преобразован в строку
Хорошо, конечно, как бы это имя объекта я не называлчтобы сказать: firstname
?
Я пробовал это в соответствии с официальными документами
echo $this->session->firstname
И echo $this->user_data('userID');
, которые приводят кбуду в той же ошибке.
Я понимаю, что данные $ _SESSION, похоже, сохраняются в многомерном массиве, поэтому я попробовал foreach()
как таковой
foreach ($_SESSION as $sessions)
{
foreach ($sessions as $value)
{
echo $value;
}
}
, который выдает мне ошибку:
Сообщение: указан неверный аргумент для foreach ()
Однако после еще двух похожих ошибок на последней итерации он возвращает значения всех сеансов, поэтому я предполагаю, что я что-то делаю неправильнопетля.
Код следует ниже
Users_model.php
public function login($username, $password)
{
// Validate
$this->db->where('username', $username);
$this->db->where('pword', $password);
$stmnt = $this->db->get('users');
if($stmnt->num_rows() == 1){
return $stmnt->row(1);
} else {
return false;
}
}
Controller.php
public function login(){
$data['title'] = 'Sign In';
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if($this->form_validation->run() === FALSE){
$this->load->view('templates/header');
$this->load->view('users/login', $data);
$this->load->view('templates/footer');
} else {
// Get username
echo $username = $this->input->post('username');
// Get and encrypt the password
echo $password = $this->input->post('password');
// Login user
$user_id = $this->users_model->login($username, $password);
if($user_id){
// Create session
$user_data = array(
'username' => $username,
'userID' => $user_id,
'logged_in' => true
);
$username = user_data ['username'];
$userID = user_data ['userID'];
$logged_in = user_data ['logged_in'];
$this->session->set_userdata($username );
$this->session->set_userdata($userID );
$this->session->set_userdata($logged_in);
// Set message
//$this->session->set_flashdata('user_loggedin', 'You are now logged in');
redirect('pages/index');
} else {
// Set message
// $this->session->set_flashdata('login_failed', 'Login is invalid');
redirect('users/failed');
}
}
}
$ config.php
$autoload['libraries'] = array('form_validation','session', 'pagination');
Любая помощь или конструктивная критика приветствуются