Udd*_*ers 5 php cookies session codeigniter
我正在尝试构建一个记住用户与网站交互的系统,例如我的网站允许用户构建自己的导航系统,但我希望系统能够记住他们选择的导航系统而无需用户注册,我认为我需要使用会话/ cookie,而且我认为我需要使用cookie,因为它们在浏览器关闭时不会过期(我知道它们会在一段时间后过期).
所以我已经使用codeigniter会话库进行了设置,并将会话ID保存到数据库中.我需要知道的是如何使用会话和cookie保存用户导航选项,例如,如果用户选择使用博客导航,那么我需要能够保存,以便下次他们来到网站时,博客导航是用过的.有人可以指点我正确的方向吗?请不要指向我手册.我尝试过cookie帮助程序,无论我尝试什么,cookie都不会设置.
我知道您要求不要指着手册,但它确实会给您答案。您不需要直接与 cookie 交互来完成您想做的事情,会话会为您处理这个问题。只要您不保存任何敏感数据,您就可以将会话设置保留为默认值,这会将会话数据保存到用户计算机上的 cookie,但您需要进行一些小的调整以确保延长超时时间。
首先,请阅读:Session Class : CodeIgniter User Guide
然后就可以加载会话库了:
$this->load->library("session");
Run Code Online (Sandbox Code Playgroud)
并将数据保存到会话中:
$this->session->set_userdata("navigation_choice_a", "navigation_value_a");
Run Code Online (Sandbox Code Playgroud)
然后稍后使用以下命令读出它:
$this->session->userdata("navigation_choice_a");
// Will return "navigation_value_a"
Run Code Online (Sandbox Code Playgroud)
您还可以将数字、类和数组保存到会话中,它们将在读取数据时再次重建。
最后一件事,为了确保会话在两小时后不会过期,请在您的配置中将行更改为$config['sess_expiration']:
$config['sess_expiration'] = 0;
Run Code Online (Sandbox Code Playgroud)
这将确保会话不会过期。