Database 从数据库检索会话
我使用mysql数据库来存储用户会话数据。 我使用会话id作为变量(GET)将用户重定向到另一台服务器,然后需要使用该id从DB检索会话 我的远程服务器中使用的代码:Database 从数据库检索会话,database,session,yii,session-state,Database,Session,Yii,Session State,我使用mysql数据库来存储用户会话数据。 我使用会话id作为变量(GET)将用户重定向到另一台服务器,然后需要使用该id从DB检索会话 我的远程服务器中使用的代码: Yii::app()->session->sessionID = $sessionID; Yii::app()->session->open(); 结果是会话被覆盖而没有数据(新会话被打开)。 如何从数据库中检索会话?我是否需要为表格创建模型,或者是否可以使用YII会话功能 谢谢, Danny您不
Yii::app()->session->sessionID = $sessionID;
Yii::app()->session->open();
结果是会话被覆盖而没有数据(新会话被打开)。
如何从数据库中检索会话?我是否需要为表格创建模型,或者是否可以使用YII会话功能
谢谢,
Danny您不必为会话表创建模型,因为
依赖PDO访问数据库
会话组件的配置是什么
指定会话ID并通过调用方法手动启动会话。此方法使用PHP的函数。根据会话设置保存处理程序的手册页面:
当会话启动或调用session_start()时,PHP会在内部调用此回调
由于创建会话或恢复当前会话
,您必须在设置会话标识符之前授予该会话不会自动启动的权限。Yii的会话实例的属性对此负责,并且必须设置为false
(默认为true
)
此外,还必须指定通过数据库连接检索会话数据的标识符。这很重要,否则:
如果未设置,将自动创建并使用SQLite数据库
记住这一切,我认为会话组件的配置必须如下所示:
'session' => array(
'class' => 'CDbHttpSession',
'autoStart' => false,
'connectionID' => 'db',
'sessionTableName' => 'your_session_table_name',
'autoCreateSessionTable' => false // for performance reasons
)
您不必为会话表创建模型,因为依赖PDO访问数据库
会话组件的配置是什么
指定会话ID并通过调用方法手动启动会话。此方法使用PHP的函数。根据会话设置保存处理程序的手册页面:
当会话启动或调用session_start()时,PHP会在内部调用此回调
由于创建会话或恢复当前会话
,您必须在设置会话标识符之前授予该会话不会自动启动的权限。Yii的会话实例的属性对此负责,并且必须设置为false
(默认为true
)
此外,还必须指定通过数据库连接检索会话数据的标识符。这很重要,否则:
如果未设置,将自动创建并使用SQLite数据库
记住这一切,我认为会话组件的配置必须如下所示:
'session' => array(
'class' => 'CDbHttpSession',
'autoStart' => false,
'connectionID' => 'db',
'sessionTableName' => 'your_session_table_name',
'autoCreateSessionTable' => false // for performance reasons
)
php使用这个名称(PHPSESSID)将sessionid存储在cookie中,并且还将会话id存储在浏览器的cookie中(因为它使用php默认会话)。
如果您在cookie中更改PHPSESSID变量,您将能够更改我们的会话。
你必须这么做
setcookie('PHPSESSID',$sessionId)代码>//其中$sessionId是从db读取的会话id,并且此会话必须存在 php使用这个名称(PHPSESSID)将sessionid存储在cookie中,yii还将会话id存储在浏览器的cookie中(因为它使用php默认会话)。
如果您在cookie中更改PHPSESSID变量,您将能够更改我们的会话。
你必须这么做
setcookie('PHPSESSID',$sessionId)代码>//其中$sessionId是从db读取的会话id,并且此会话必须存在 恐怕这不是会话的设置方式……我将会话id与数据库本身中的所有变量和数据(作为对象)一起保留。请参阅:CDbHttpSession-恐怕这不是会话的设置方式…我将会话id与数据库本身中的所有变量和数据(作为对象)一起保留。请参阅:CDbHttpSession-这正是我的配置的外观:)。。。现在你说我只需要使用标准的YII查询生成器检索会话?顺便说一句,如果你想使用默认的-YiISessionThank,工作得很好,你不必使用sessionTableName!添加autostart=false后不需要使用查询生成器。这正是我的配置的外观:)。。。现在你说我只需要使用标准的YII查询生成器检索会话?顺便说一句,如果你想使用默认的-YiISessionThank,工作得很好,你不必使用sessionTableName!添加autostart=false后不需要使用查询生成器。