gpt4 book ai didi

php - Laravel 5.0 显示登录访客和注册用户

转载 作者:可可西里 更新时间:2023-11-01 08:44:58 25 4
gpt4 key购买 nike

我正在尝试向我的网站添加一个功能,显示登录访客和注册用户的数量(也显示注册用户的姓名,但我可以弄清楚那部分)。目前,我已经读到我需要更改/config/Session.php 文件 'driver' 以使用 database 而不是 file ('driver' => env('SESSION_DRIVER', '数据库'),).我找到了一篇使用 Sentry 来完成此操作的文章 ( http://laravel.io/forum/03-03-2014-sentry-3-users-online ),但是,我更愿意在不需要第三方文件的情况下执行此操作。尽管如此,我还是以他的信息为起点,开始使用 session 模型。

至于问题,首先,即使在修改 Session.php、创建表并迁移它之后,我也无法真正让 session 开始保存在我的数据库“ session ”表中。它仍然保存在/storage/framework/session/中的文件中(我仍然可以使用 Session::all() 登录并显示 session 信息)。

mysql> select * from sessions;
Empty set (0.00 sec)

第二个问题,如果他的文件中不存在 session ,我不知道如何创建 session ,无法创建(如果有人只是打开网站,因此是访客)也不会在用户注销时注销用户(删除他们的登录状态以及他们的 user_id,以便他们被视为访客)。

这是我当前的 OnlineUser.php 文件:

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
// use Sentry;
use Session;
use Auth;

class OnlineUser extends Model {

/**
* {@inheritDoc}
*/
public $table = 'sessions';

/**
* {@inheritDoc}
*/
public $timestamps = false;

/**
* Returns all the guest users.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeGuests($query)
{
return $query->whereNull('user_id');
}

/**
* Returns all the registered users.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeRegistered($query)
{
return $query->whereNotNull('user_id')->with('user');
}

/**
* Updates the session of the current user.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeUpdateCurrent($query)
{
return $query->where('id', Session::getId())->update(array(
'user_id' => !empty(Auth::user()) ? Auth::user()->id : null
));
}

/**
* Returns the user that belongs to this entry.
*
* @return \Cartalyst\Sentry\Users\EloquentUser
*/
public function user()
{
return $this->belongsTo('\App\User');
//return $this->belongsTo('Cartalyst\Sentry\Users\EloquentUser'); # Sentry 3
// return $this->belongsTo('Cartalyst\Sentry\Users\Eloquent\User'); # Sentry 2
}

}

如果有人有任何信息可以帮助我解决这些问题,我将不胜感激。如果您需要更多信息,请告诉我,我会尽快回复。

谢谢。

最佳答案

针对第一个问题,Laravel 仍然将session 保存在/storage/framework/session/

如果您按如下方式更新了 session.php 文件:

env('SESSION_DRIVER', 'database')

确保你也更新了你的 .env 文件

SESSION_DRIVER=database

关于php - Laravel 5.0 显示登录访客和注册用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31464301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com