我使用 Yii框架,在框架中我使用第三方应用程序 mibew Messenger (或聊天)。
我需要的是将$_session
变量(用户名和密码)从yii框架传递给 Mibew messenger ,我需要这个,因为我想在登录时自动登录我的yii申请。
Mibew messenger 文件夹位于应用程序的app文件夹中。
那么如何在 yii framework 之外使用相同的会话?
感谢您的帮助。
答案 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>';