【问题标题】:Do I need to use sessions in Codeigniter?我需要在 Codeigniter 中使用会话吗?
【发布时间】:2015-04-20 23:25:48
【问题描述】:

或者在一般的 PHP 中。我需要在访问某个页面时检查用户是否已登录。教程建议使用会话,例如

$sessionData = array('username'=>$username, 'status'=>1);
$this->session->set_userdata($sessionData);

为了更好的安全性,他们建议使用 db 表。

如果我只是将用户名和状态存储在数据库中,然后在人们注销时将状态更改为 0 会怎样?

每当他们需要访问某个页面时,我只需检查状态是否为 1。

【问题讨论】:

  • 你怎么知道他们退出了?
  • "每当他们需要访问某个页面时,我只检查状态是否为 1。"当多人尝试访问该页面时,您如何知道谁是谁?会话非常易于使用,并且不仅仅用于测试用户是否登录。我建议您熟悉使用它们。
  • 如果您不使用会话,您如何确定登录的用户,他们说他是谁?您必须在会话方面使用一些东西来保持用户的活力,当他更改页面时,您将无法参考用户是谁。

标签: php codeigniter security session


【解决方案1】:
  1. 当您调用session_start()时,PHP 会在用户浏览器中使用随机生成的 ID 设置一个 cookie。
  2. 从那时起,只要您将值存储在$_SESSION 中,该文件中的值就会[默认] 存储在脚本末尾的session.save_path 文件中。此文件由会话 ID 标识。
  3. 在后续请求中,客户端将其会话 ID cookie 发送回服务器,因此当您在脚本中调用 session_start() 时,PHP 可以检索该会话文件并将内容恢复到 $_SESSION。

从字面上看,你将编写的任何东西都只是重新实现这个已经编写好的行为,但没有多年来为 PHP 项目贡献的额外安全层。

【讨论】:

  • 谢谢。我知道会话在 PHP 和 CI 中是如何工作的。我只是问使用它们有什么意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多