CodeIgniter войти на всех страницах
Я очень новичок в CI модель MVC.
У меня есть простая страница, которая состоит из 3 просмотров. Верхний колонтитул, содержание и нижний колонтитул. Содержание будет уникальным для всего сайта, но верхний и нижний колонтитулы будут одинаковыми, независимо от того, на какой странице.
У меня в шапке есть форма для входа. Таким образом, будет форма входа по всему сайту. так как он появляется на каждой странице, которая имеет различные модели:
как и где я напишу скрипт для входа в систему пользователя, поскольку мне не нравится писать скрипт входа в систему для каждой модели, на которой используется заголовок...
Может быть, другой пример:
Если не понятно, попробую другой пример. Предположим, у меня есть сайт. В этом я загружаю представление, которое является нижним колонтитулом на всех моих страницах. и нижний колонтитул содержит форму. Теперь, когда я публикую данные с помощью этой формы, куда эти данные должны идти?
Покажите это, перейдите к выделенному файлу PHP, который обрабатывает все сообщения из этой формы, или он должен перейти к контроллеру текущей страницы?
Надеюсь, мне было ясно. Я снова начал использовать CI и MVC день назад. Было бы хорошо, если бы вы могли вести меня.
2 ответа
Когда я публикую данные с помощью этой формы, куда эти данные должны идти?
Вы не должны писать логику на каждой странице (контроллере). Что вы должны сделать, это создать отдельный контроллер (например, Accounts
) для управления регистрацией пользователей.
Форма входа должна опубликовать данные accounts/login
URL. но чтобы вернуться на предыдущую страницу, мы должны сохранить текущий URL в сеансе как referer
,
Для этого просто храните uri_string();
в сессии на каждой странице вам нужно.
$this->session->set_userdata(array(
'referer' => $this->uri->uri_string()
));
Если вам не нужно перенаправлять пользователя на предыдущую страницу, игнорируйте его.
Пример ниже показывает, как достичь цели:
class Accounts extends CI_Controller {
public function login()
{
$config = array(
// Write your validation rules here
);
$this->load->library('form_validation');
$this->form_validation->set_rules($config);
// Check whether form is submitted
if (isset($_POST['submit'])) {
if ($this->form_validation->run() == FALSE) {
$data['login_errors'] = validation_errors();
// Store validation errors in session
// to display on every page needed
$this->session->set_userdata($data);
} else {
// Login process
// Set user detail in session
// Redirect to previous page after login
if ($referer = $this->session->userdata('referer')) {
$this->session->unset_userdata('referer');
} else {
$referer='';
}
redirect(base_url().$referer);
}
}
}
public function logout()
{
// Destroy the session
$this->session->sess_destroy();
redirect(base_url());
}
}
- Создать модель с глобальной функцией
- Поместите функцию в конфиге autoload.php в разделе "Модели"
- Вы можете вызвать эту модель из любой точки мира, не загружая ее.