Я пытаюсь создать систему помнить взаимодействия пользователя с веб-сайтом, например, мой сайт позволяет пользователям создавать свою собственную систему навигации, но я хочу, чтобы система смогла помнить систему навигации, которую они выбирают без пользователя, имеющего необходимость подписываться, я предполагаю, что должен использовать сессии/cookie для них, и далее я предположил бы, что должен буду использовать cookie, поскольку они не истекают, когда браузер закрывается (я знаю, что они истекают после промежутка времени).
Таким образом, я настроил пользование codeigniter библиотекой сессии и имею идентификационное сохранение сессии к базе данных. То, что я должен знать, - то, как может с помощью сессий, и cookie сохраняют пользовательский выбор навигации, например, если пользователь выбирает пользователю навигацию блога затем, я должен смочь, экономят этому поэтому следующий раз, когда они прибывают в сайт, навигация блога используется. Кто-то мог указать на меня в правильном направлении? Не указывайте на меня на руководство. Я судил помощника cookie и независимо от того, что я пробую, cookie не установит.
Я знаю, что вы попросили не быть указанным в руководстве, но это действительно даст вам ответы. Вам не нужно напрямую взаимодействовать напрямую с помощью cookie, чтобы сделать то, что вы хотите сделать, сеансы обрабатывают это для вас. До тех пор, пока вы не сохраняете какие-либо конфиденциальные данные, вы можете оставить настройки сеанса по умолчанию, что сэкономит данные сеанса в файл cookie на машине пользователя, но вы захотите внести небольшую настройку, чтобы убедиться, что время ожидания продлен.
Итак, первый, прочитал: Класс сеанса: Руководство пользователя Codeigniter
Затем вы можете загрузить библиотеку сеанса:
$this->load->library("session");
и сохранить данные на сеанс:
$this->session->set_userdata("navigation_choice_a", "navigation_value_a");
Затем прочитайте его позже, используя:
$this->session->userdata("navigation_choice_a");
// Will return "navigation_value_a"
Вы также можете сохранить номера, классы и массивы на сеанс, и они снова будут воссоздать при чтении данных.
Последнее, чтобы убедиться, что сеанс истекает через два часа, на вашем конфиге, измените строку с помощью $ config ['sess_expiration']
, чтобы быть:
$config['sess_expiration'] = 0;
Это обеспечит Сессия не истекает.
Когда заказчик выбирает систему навигации, необходимо сохранить варианты навигации заказчика в базе данных.
Используйте вход в систему.
Извлеките данные из базы данных.
Я извлекаю информацию о клиенте в контроллере.
...
if(isset($_SESSION['customer_id'])){
$data['fname'] = $_SESSION['customer_first_name'];
$data['lname'] = $_SESSION['customer_last_name'];
$data['telephone'] = $_SESSION['phone_number'];
$data['email'] = $_SESSION['email'];
$data['address'] = $_SESSION['address'];
$data['city'] = $_SESSION['city'];
$data['pcode'] = $_SESSION['post_code'];
}
$this->load->vars($data);
$this->load->view('welcome/template');
Это мой контроллер входа/выхода
function login(){
// $data['loggedin']=0;
if ($this->input->post('email')){
$e = $this->input->post('email');
$pw = $this->input->post('password');
$this->MCustomers->verifyCustomer($e,$pw);
if (isset($_SESSION['customer_id'])){
// $data['loggedin']=$_SESSION['customer_id'];
$this->session->set_flashdata('msg', 'You are logged in!');
redirect('welcome/login','refresh');
}
$this->session->set_flashdata('msg', 'Sorry, your email or password is incorrect!');
redirect('welcome/login','refresh');
}
$data['main'] = 'welcome/customerlogin';// this is using views/login.php
$data['title'] = "Customer Login";
$this->load->vars($data);
$this->load->view('welcome/template');
}
И выход
function logout(){
// or this would remove all the variable in the session
session_unset();
//destroy the session
session_destroy();
redirect('welcome/index','refresh');
}