在 codeigniter 中集成正常的 php 会话

Posted

技术标签:

【中文标题】在 codeigniter 中集成正常的 php 会话【英文标题】:Integrating normal php session in codeigniter 【发布时间】:2012-09-05 18:50:33 【问题描述】:

我一直在 codeigniter 中体验会话,但由于有时我需要在不使用控制器的情况下注册会话,所以我遇到了一些失败。例如,当 facebook 用户使用 FACEBOOK SDK 在我的应用程序中登录时,此插件使用正常的 php 会话,因此当我尝试将它们放入 codeigniter 控制器时我失败了;另一方面,当我在控制器中注册会话时,我需要在其他控制器中调用相同的会话或注册基本控制器。终止 codeIgniter 会话不会删除 SDK 会话和 cookie。那么如何在 CodeIgniter 中使用正常会话,以免丢失 SDK 功能。谢谢。

【问题讨论】:

我认为让 Facebook 使用 CI 会话实际上可能比反过来更容易。 【参考方案1】:

codeigniter 会话的替代品已经可用,它被称为 Native Sessions 类,您只需将文件放在它们的位置即可,一切都应该按预期工作。

https://github.com/appleboy/CodeIgniter-Native-Session

【讨论】:

我试图为本地会话获取库。但问题是这样的:我想在 facebook 用户使用 $_SESSION['email']=$user_profile['email']; 登录后注册在 index_view 中的会话。 header("位置:家");当我尝试使用简单的 echo 在 home_view 中获取它时,我收到错误消息:未定义索引:电子邮件 无论您打算在哪里使用它,都必须在应用程序开始时启动会话。使用本机会话类,它将使您可以使用通常的 codeigniter 会话方法访问会话数据 $this->session->userdata('something'); ...无论如何,如果您获得未定义的索引,则意味着您一开始没有保存它。给我看一些代码,这样我可以进一步帮助你。【参考方案2】:

facebook 包装器正是出于这个原因而编写的。管理与基类一起使用或由基类使用的数据是在这个包装器中完成的。

在构造函数中将 CI 超全局分配给 facebook 类之后

$this->ci =& get_instance();

替换所有实例

$_SESSION

与之前进入 $_SESSION 的相关信息

//Add data to the session
$this->ci->session->set_userdata();

//Remove data from the session
$this->ci->session->unset_userdata();

【讨论】:

当我在 facebook 类的 setPersistentData 方法中更改:$session_var_name = $this->constructSessionVariableName($key); $_SESSION[$session_var_name] = $value;$session_var_name = $this->constructSessionVariableName($key); $fbkhmpsession=array('session_var_name' =>$session_var_name); $this->ci->session->set_userdata($fbkhmpsession); 并在 getPersistantData 中获取它们 $session_var_name = $this->constructSessionVariableName($key); return isset($_SESSION[$session_var_name]) ? $_SESSION[$session_var_name] : $default; 更改为$session_var_name = $this->constructSessionVariableName($key); return isset($this->ci->session->userdata($session_var_name) ? $this->ci->session->userdata($session_var_name) : $default; 我收到以下错误:致命错误:无法在第 119 行的 C:\xampp\htdocs\hmplatform\facebook.php 的写入上下文中使用方法返回值

以上是关于在 codeigniter 中集成正常的 php 会话的主要内容,如果未能解决你的问题,请参考以下文章

如何在 codeigniter 中集成 agora sdk

在 codeigniter 3 中集成碳库

如何在 codeigniter 中集成 razorpay 支付网关

在codeigniter中集成skrill支付网关[关闭]

在 codeigniter 中集成 gridster.js

如何在codeigniter中集成swfupload