Php 如何将yii框架中的会话用于我的第三方应用程序
我使用Yii框架,在框架中我使用第三方应用程序,即mibew Messenger(或聊天) 我需要的是将Php 如何将yii框架中的会话用于我的第三方应用程序,php,yii,Php,Yii,我使用Yii框架,在框架中我使用第三方应用程序,即mibew Messenger(或聊天) 我需要的是将$\u session变量(用户名和密码)从yii framework传递到Mibew messenger,因为我想在登录到yii应用程序时自动登录 Mibew messenger文件夹位于应用程序的应用程序文件夹中 那么,如何在yii框架之外使用相同的会话呢 谢谢你的帮助。我想你可以做以下几点: Yii::app()->session['usename'] = $user; Yii:
$\u session
变量(用户名和密码)从yii framework传递到Mibew messenger,因为我想在登录到yii应用程序时自动登录
Mibew messenger文件夹位于应用程序的应用程序文件夹中
那么,如何在yii框架之外使用相同的会话呢
谢谢你的帮助。我想你可以做以下几点:
Yii::app()->session['usename'] = $user;
Yii::app()->session['password'] = $password;
1) 在需要访问会话的第三方应用程序文件中:
2) 如果您有会话的特定配置,则需要配置:
3) 对于标准会话(而不是步骤2),您应该尝试:
然后您可以在框架中使用会话:$session[$var\u name]
或$session->get/set($var\u name)
我没有检查它的解决方案。如果出现错误,请将其写在注释上
已更新
只需要做:
然后您可以通过
Yii::app()
使用所有框架功能,您可以通过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;
这是您自己制作的细节。对于Yii2,它是这样做的:
defined('yi_DEBUG')或define('yi_DEBUG',true)//根据您的需要设置这些
定义('yi_ENV')或定义('yi_ENV','dev');
require(_DIR__.'/../vendor/autoload.php');
要求(_DIR__.'/../vendor/yiisoft/yii2/Yii.php');
$config=require(_DIR__.'/../config/web.php');
新的yii\web\Application($config);
然后,您可能希望立即打开会话,以便$\u会话此后始终可用:
Yii::$app->session->open();
您现在可以像正常情况一样使用$\u SESSION
,也可以使用例如Yii::$app->SESSION['sessionvarname']='somevalue'代码>(或指南章节中描述的任何方法)
此外,例如,如果您想使用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>';
$asset=Yii::$app->assetManager->getBundle('Yii\web\YiiAsset',true);
echo yii\helpers\Html::jsFile(yii::$app->assetManager->getassetur($asset,'yii.js'));
//或者--
回声';
谢谢你的回答,你知道如果我需要使用'Yii::app()->user'我该怎么做吗?如何获得它?我需要包括任何其他文件吗?谢谢,您需要创建CWebUser的对象。它从会话本身获取所有信息。等一下。新的解决方案(如果正确,我将重写我的答案):尝试包含YiiBase.php
和您的配置。doYii::createWebApplication($config)
(如index.php
中,不调用方法run()
)。然后,我想,您可以在第三个应用程序中使用Yii::app()。它一定有用!好的,我把require('../../framework/YiiBase.php');需要('../protected/config/main.php');Yii::createWebApplication($config);我得到了错误,致命错误:)(!)致命错误:无法在第55行的/opt/local/www/projects/theuniversalgroup/app/framework/YiiBase.php中重新声明类YiiBase。抱歉,我犯了错误,我添加了一些代码,现在一切正常:)我忘了添加$config等于:)像这样:require('../framework/yii.php')$config=require('../../protected/config/main.php');Yii::createWebApplication($config);
Yii::app()->session['usename'] = $user;
Yii::app()->session['password'] = $password;
Yii::$app->session->open();
$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>';