在 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 会话的主要内容,如果未能解决你的问题,请参考以下文章