Я использую CodeIgniter и имею систему входа в систему. Я все еще довольно новичок в php, и мне интересно, как только пользователь войдет в систему, как я могу получить доступ к его / ее данным для использования по всему сайту? Сейчас я пытаюсь заставить его сказать «имя пользователя», но я не знаю, откуда берутся переменные и как я должен их использовать. Прямо сейчас в моем home_view.php у меня есть:
<div class="main">
<h2>Welcome <?php echo $username; ?>!</h2>
</div>
Выдает эту ошибку:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: username
Filename: views/home_view.php
Line Number: 22
Может кто-нибудь сказать мне, как это сделать?
Вопрос: Как вы получаете доступ к данным вошедшего в систему пользователя для использования по всему сайту?
Зарегистрированные пользовательские данные обычно хранятся в сеансе. Для codeigniter вы можете получить доступ к данным сеанса, используя $this->session->userdata('item');
или, например, $this->session->userdata('username');
,
Однако, если вы используете определенную систему входа в систему это зависит от системы входа в систему, которую вы используете.
Система пользовательского входа
После получения данных для входа в систему из формы входа в систему передайте данные в сеанс с помощью следующего:
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Затем обратитесь к имени пользователя со следующим:
$this->session->userdata('username');
Увидеть Добавление пользовательских данных сеанса в документации Codeigniter.
Пример системы входа
Популярная библиотека аутентификации codeigntier Tank-Auth.
При использовании Tank-Auth, после того, как пользователь вошел в систему, вы можете позвонить $this->tank_auth->get_username()
(который вызывает $this->ci->session->userdata('username')
, как уже упоминалось выше). Это может быть сохранено и передано в представление.
В Tank-Auth вы увидите:
Применение / контроллер / welcome.php
$data['user_id'] = $this->tank_auth->get_user_id();
$data['username'] = $this->tank_auth->get_username();
$this->load->view('welcome', $data);
Приложение / просмотров / welcome.php
Hi, <strong><?php echo $username; ?></strong>! You are logged in now.
Хорошо, когда пользователь вошел в систему, вам нужно сохранить его или ее данные для сессии.
когда вы проверяете, пользователь получает свои данные и сохраняет их в сеансе.
$data = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata('logged_info', $data );
и тогда вы можете получить его в любом месте, как
$userdata = $this->session->userdata('logged_info');