Mor*_*eza 4 php mysql session user-profile yii2
今天,当我想为我的网站创建用户个人资料页面并希望创建系统时,用户可以在此系统需求中管理他的活动会话
我们该怎么做?
我找到此解决方案来将我的用户保存user_id到会话表中
但是实现此问题还有另一个问题:如何基于用户的浏览器和平台对用户会话进行分类,我找到了这个解决方案。
我使用此类和下面的代码在会话数据库中添加了另一列,并在其中保存了浏览器信息和用户平台信息。
'components' => [
//...
'session' => [
'class' => 'yii\web\DbSession',
'writeCallback' => function ($session) {
$user_browser = null;
if (!Yii::$app->user->isGuest) {
$browser = new \BrowserDetection();
$user_browser = "{$browser->getName()}-{$browser->getPlatform()}" . ($browser->is64bitPlatform() ? "(x64)" : "(x86)") . ($browser->isMobile() ? "-Mobile" : "-Desktop");
}
return [
'user_id' => Yii::$app->user->id,
'last_write' => new \yii\db\Expression('NOW()'),
'browser_platform' => $user_browser
];
}
],
// ...
]
Run Code Online (Sandbox Code Playgroud)
注意:您将其他数据添加到会话表中
但是要找到当前会话,当我检查Yii::$app->session->id并返回空字符串值时遇到了一个问题,并且在下面的链接中找到了解决方案。
在Yii2-Advanced中,我从中创建frontend\components\baseController并扩展所有控制器,并beforeAction()在其中创建和打开会话,如下所示:
namespace frontend\components;
class BaseController extends \yii\web\Controller
{
public function beforeAction($action)
{
if (parent::beforeAction($action))
{
Yii::$app->session->open();
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我为会话数据库创建ActiveRecord模型,并在配置文件页面中使用它来显示或删除用户会话
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |