用户
 找回密码
 入住 CI 中国社区
搜索
楼主: Hex
收起左侧

[库 Library] [2.0.x] PHP 原生 Session 类库,可完全替代 CI 自己的 Session 类库

    [复制链接]
发表于 2013-4-25 18:22:37 | 显示全部楼层
问楼主个问题呀。使用你这个类,怎么实现通过sessionid读取全部session数据?

因为用flash上传,始终会存在session丢失的问题。

我以前用原生的php sessiion的做法是:
一:在用flash传图片的时候,同时把sessionid传过去。
二:图片保存那边先用接收到的session_id(收到的sessionid值),然后再用session_start(),之后就可以正常使用session数据了。

我想问的是:使用你这个类或是原来ci的那个session类怎么实现上面那样的效果?
发表于 2013-4-25 18:28:50 | 显示全部楼层
amu 发表于 2013-4-25 18:22
问楼主个问题呀。使用你这个类,怎么实现通过sessionid读取全部session数据?

因为用flash上传,始终会存 ...

其实我在代码里面用php 原生的 session 写法是可以完成工作的。

先清除
session_unset();
session_destroy();

//手工指定并开启
session_id('qnb2u4hd9mespi3vg4jm06deh5');
session_start();

后面用$_SESSION['userid']就行。
但是这样就完全没有用到框架的session类了。

而且ci那个session类这样做是行不通的(前提是我没在有数据库中记录session)
 楼主| 发表于 2013-4-25 19:11:48 | 显示全部楼层
amu 发表于 2013-4-25 18:28
其实我在代码里面用php 原生的 session 写法是可以完成工作的。

先清除

使用 CI Session 类就是封装的比较好,用起来方便,你如果喜欢用 $_SESSION 也是没问题的。
发表于 2013-4-25 20:42:23 | 显示全部楼层
Hex 发表于 2013-4-25 19:11
使用 CI Session 类就是封装的比较好,用起来方便,你如果喜欢用 $_SESSION 也是没问题的。 ...

我就是想知道这个session类有没有这方面的解决方案,因为即然全都用框架的东西了,突然又有的地方不用,看起来不太合众一样。
 楼主| 发表于 2013-4-26 09:50:21 | 显示全部楼层
amu 发表于 2013-4-25 20:42
我就是想知道这个session类有没有这方面的解决方案,因为即然全都用框架的东西了,突然又有的地方不用, ...

你是想设置 sessin id ?你需要什么功能?
发表于 2013-4-26 10:16:15 | 显示全部楼层
Hex 发表于 2013-4-26 09:50
你是想设置 sessin id ?你需要什么功能?

嗯,就像我上面说到flash那个问题一样,因为原session都已经丢失了。

现在根据一个session id值(通过get或post什么的方法传过来的不管),然后重新让这个session类可以正常使用原session id那边的那些session数据。

我想大概应该会是在session类中加一个方法,这个方法需要一个参数sesssion id。这个方法的作用就是依据参数session id重新初始化整个session数据,以便像$this->session->userdata('session名')这样的方法可以接着正常使用。
 楼主| 发表于 2013-4-26 12:29:18 | 显示全部楼层
amu 发表于 2013-4-26 10:16
嗯,就像我上面说到flash那个问题一样,因为原session都已经丢失了。

现在根据一个session id值(通过ge ...

你说的没错,我发布的这个类缺少你说的功能。
这是个问题,应该补上。
发表于 2013-4-26 14:48:56 | 显示全部楼层
Hex 发表于 2013-4-26 12:29
你说的没错,我发布的这个类缺少你说的功能。
这是个问题,应该补上。

好哟,好哟,楼主写好了新了,我就来下哈。主要是我写这个水平太差了。不然就自己动手了。现在只有依靠你们这些真正的高手了。
发表于 2013-5-28 00:51:29 | 显示全部楼层
谢谢分享,非常棒
发表于 2013-5-28 17:29:20 | 显示全部楼层
amu 发表于 2013-4-26 14:48
好哟,好哟,楼主写好了新了,我就来下哈。主要是我写这个水平太差了。不然就自己动手了。现在只有依靠你 ...
  1.         /**
  2.          * Switch to the session which has the given ID
  3.          *
  4.          * @param        string                Session ID to switch to
  5.          * @param        string                Session name
  6.          * @param        string                Session save handler
  7.          *
  8.          * @return        Array                The retrieved session data
  9.          *
  10.          */
  11.         function switchSession($session_id, $session_name = 'PHPSESSID', $session_save_handler = 'files')
  12.         {
  13.                 # write and close current session
  14.                 session_write_close();
  15.                        
  16.                 # grab old save handler, and switch to files
  17.                 $old_session_save_handler = ini_get('session.save_handler');
  18.                 ini_set('session.save_handler', $session_save_handler);
  19.                        
  20.                 # now we can switch the session over, capturing the old session name
  21.                 $old_session_name = session_name($session_name);
  22.                 session_id($session_id);
  23.                 session_start();
  24.                        
  25.                 # get the desired session data
  26.                 $session_data = $_SESSION;
  27.                        
  28.                 # now return the data we just retrieved
  29.                 return $session_data;
  30.         }       
复制代码

本版积分规则