在CodeIgniter中使用Isset和本机会话

Mil*_*lle 5 session codeigniter isset

我已经读过CI如何处理会话与本地会话不同,并且对将所有数据存储在cookie(?)中感到有些不安全,这与PHP的本地会话不同,后者只存储会话ID(?).所以我决定使用没有CI native_session库的原生会话.

现在,我知道CI中的输入类使用如下的true/false语句验证Isset:

if ($this->input->post('something'))
Run Code Online (Sandbox Code Playgroud)

这使得Isset函数无法工作(它给出了一个错误).但是,我想用Isset函数检查我的本机会话,那么我该怎么做呢?我试过了

if (isset($_SESSION['keyHere']))

这给了我一个错误.

总结一下:我想在我的会话数组上使用Isset,因为我觉得使用它

if ($_SESSION['keyHere'])

没有Isset可能是'危险/愚蠢'.

另外,作为最后一个问题,我很好奇你认为最安全的会话处理?CI的Session Class或PHP的本机处理与服务器端存储等?我非常希望在会话方面尽可能安全,无论是否意味着我必须编写更长的代码.

Gol*_*rol 1

我会用array_key_exists而不是isset. isset还会检查值是否不为 null,因此具有现有键但值为 null 的数组仍将返回 false。您知道它是一个数组,并且想要检查某个键是否存在,因此使用 array_key_exists 是最有意义的。

但这不是问题。:D

我想你需要先打电话session_start()

只要您在单个 Web 服务器上,PHP 的本机会话处理就可以很好地执行。