Я хочу сохранить IP-адрес посетителя только один раз в базе данных, по этой причине я создал промежуточное ПО и попытался сохранить IP-адрес пользователя, используя $ request-> ip. Но проблема заключается в том, что данные всегда дублируются в базе данных, чтобы избежать такого рода Я пытался установить логический флаг в сеансе Laravel, чтобы проверить, был ли IP-адрес текущего пользователя сохранен в базе данных или нет? Но Laravel ничего не сохранил в сеансе Laravel, поэтому данные дублируются в базе данных.
Мой код:
namespace App\Http\Middleware;
use App\Repositories\Contracts\VisitorRepositoryInterface;
use Closure;
use Session;
class VisitorMiddleware
{
private $visitorRepository;
public function __construct(VisitorRepositoryInterface $visitorRepository)
{
$this->visitorRepository = $visitorRepository;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!session('visited', false)) {
$this->visitorRepository->create([
'ip' => $request->ip(),
]);
session(['visited' => true]);
session()->save();
}
return $next($request);
}
}
Я также пытался сохранить с:
$request->session()->put('visitors', true);
Но нет шансов!
Любая помощь будет оценена.