如何将yii框架中的会话用于我的第三方应用程序

时间:2013-11-11 09:59:19

标签: php yii

我使用 Yii框架,在框架中我使用第三方应用程序 mibew Messenger (或聊天)。

我需要的是将$_session变量(用户名和密码)从yii框架传递给 Mibew messenger ,我需要这个,因为我想在登录时自动登录我的yii申请。

Mibew messenger 文件夹位于应用程序的app文件夹中。

那么如何在 yii framework 之外使用相同的会话?

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我想你可以这样做:

1)在第三方应用程序的文件中,您需要访问SESSION:

require('/path/to/framework/YiiBase.php');

2)如果您有特定的会话配置,那么您需要配置:

$config = require('/path/to/protected/config/main.php');
$session = YiiBase::createComponent($config['components']['session']);

3)对于标准会话(而不是第2步),您应该尝试:

$session = new CHttpSession();

您可以在框架中使用会话:$session[$var_name]$session->get/set($var_name)

我不检查它的解决方案。如果有错误 - 将其写在评论上。

<强>已更新

只需要这样做:

require('/path/to/framework/YiiBase.php');
$config = require('/path/to/configs_directory/main.php');
Yii::createWebApplication($config);

您可以使用Yii::app()

之前的所有框架功能

答案 1 :(得分:1)

您可以通过Yii::app()->user->id;获取登录的用户ID,然后使用登录ID查询数据库中的用户名和密码,如下所示:

$userInfo = User::model()->findByPk(array('id'=>Yii::app()->user->id));
$user = $userInfo->username;
$password = md5($this->userInfo->password);

现在你可以将这些变量放入会话中,我认为没有必要。因为您应该直接将这些变量放入 mibew 。但是,如果您想将这些变量放入Yii会话中,请执行以下操作:

Yii::app()->session['usename']  = $user;
Yii::app()->session['password'] = $password;

这是您自己的详细信息。

答案 2 :(得分:0)

对于Yii2,它是这样完成的:

defined('YII_DEBUG') or define('YII_DEBUG', true);  //set these according to your needs
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

new yii\web\Application($config);

然后你可能想立即打开会话,以便以后可以使用$ _SESSION:

Yii::$app->session->open();

您现在可以正常使用$_SESSION,也可以使用例如。 Yii::$app->session['sessionvarname'] = 'somevalue';(或指南Session and Cookies中描述的任何方法)。

另外,如果你想使用Yii的一些资产,你可以像这样加载它们:

$asset = Yii::$app->assetManager->getBundle('yii\web\YiiAsset', true);
echo yii\helpers\Html::jsFile(Yii::$app->assetManager->getAssetUrl($asset, 'yii.js'));
// -- or --
echo '<script type="text/javascript" src="'. Yii::$app->assetManager->getAssetUrl($asset, 'yii.js') .'"></script>';