【问题标题】:Codeigniter session expiration after 5 minsCodeigniter 会话在 5 分钟后过期
【发布时间】:2016-03-31 09:48:03
【问题描述】:

我将 OTP(一次性密码)会话用作 $this->session->set_userdata('otp')。我想将此会话的到期时间设置为 5 分钟(300 秒)。对于我的代码中的所有其他会话,我希望到期时间为正常会话时间。这个怎么做?

【问题讨论】:

  • 你不能使用 cookie 或 codeigniter flash_data 吗?
  • 我的项目使用的是 codeigniter 2.2,所以 flash_data 是不可能的
  • @SankarV 不,flash_data 只存在 1 个请求,所以这不是一个选项。但是,您可以做的是存储添加会话的时间,然后检查令牌是否已过期。 Codeigniter 本身并没有为此提供库。
  • @Jordy .. 哎呀.. 对不起.. 我的意思是tempdata。我们不能使用 codeigniter tempdata 吗?
  • @Thedeveloper 如果您不想更改任何内容,可以尝试使用数据库。 store into database with timestamp on user input check that **current timestamp > timestamp + 5 minutes** then give error message and if not let user pass that condition 希望你能得到我... :)

标签: php codeigniter session codeigniter-2


【解决方案1】:

首先要做的是 - 您需要正确使用条款。 “会话”就是全部,而据我了解,您只想为某个会话“项目”设置 TTL。

话虽如此,您不能使用 CodeIgniter 2 执行此操作,也不应该这样做 - 不再支持 2.x 版本树。

升级到 CodeIgniter 3,您将能够使用“tempdata”功能,这正是您想要的:

// This will make $_SESSION['otp'] available only for the next 5 minutes
$this->session->set_tempdata('otp', $your_value, 300);

顺便说一句,即使您跳过该参数,5 分钟也是默认 TTL。

【讨论】:

  • 我尝试通过替换系统文件夹从 codeigniter 版本 2 升级到 3。但它给了我一些错误。如何升级??
  • 我跟着那个,但仍然有一些错误。总有一天我会升级它。你能建议我另一种选择吗?我急着写代码。我必须让它工作
  • 不,没有其他选择......而且升级通常需要不到一个小时,没有理由避免它。
  • 不,没有其他选择!不管你问我多少次都不会改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2011-04-15
  • 2017-05-17
  • 1970-01-01
  • 2011-04-30
  • 2010-10-05
相关资源
最近更新 更多