Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Странность, которую не могу понять » 23.11.2018 13:31:17

Разобрался, тему можно закрывать.
Причиной всему была вот эта строка
<link rel="shortcut icon" href="#"/>
После загрузки страницы, она снова делала запрос на сервер, где как и полагается, честно выполнялись все действия

#2 Laravel 5.x » Странность, которую не могу понять » 23.11.2018 11:44:36

Allximik
Ответов: 1

Версия Laravel: 5.5
Версия PHP: 7.2
Операционная система и её версия: win 7 x64
Вендор и версия сервера БД: MySql 5.7
Вендор и версия Веб-сервера: Apache-PHP-7-x64
Медод подключения PHP: OpenServe (всё включено)

Задача:
Написал класс, который записывает в БД запись (1 строка), а именно данные посетителя (User-agent, Referer и тому подобное).
Что бы не прописывать каждый раз в каждом контроллере запуск этого класса, сделал следующим образом:

class Kernel: в 'web' => [
\App\Http\Middleware\LogIdentification::class // Запуск этого моего класса
]
И в директории Middleware вставил этот LogIdentification.
Содержимое LogIdentification:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
use Illuminate\Support\Facades\Auth;

class Allximik extends Middleware

  public function handle($request, Closure $next)
  {
    $this->saveMrLogIdent();

    return $next($request);
  }
  
  public function saveMrLogIdent()
  {
   //код вставки новой записи в БД
  }

Что произошло, текст ошибки, если есть:
В БД вставляется 2 строки. такое ощущение, будто класс два раза вызывается (типа если бы страница сама перезагрузилась), причём в $_SERVER['HTTP_REFERER'] разные значения. Визуально страница не перезагружается, то есть вызов класса происходит где-то в глубине Laravel.

Интересное наблюдение:
Если в методе saveMrLogIdent() дописать dump('что угодно'), то запись вставляется только одна.

Лог Apache говорит следующее:
payment: 127.0.0.1 [23/Nov/2018:12:12:49 +0300] "GET / HTTP/1.1" 200 21952 "http://payment/stoks" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
payment: 127.0.0.1 [23/Nov/2018:12:12:50 +0300] "GET / HTTP/1.1" 200 21952 "http://payment/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

Куда копать? Можно-ли как-нибудь вывести лог всех процессов laravel-я, что найти причину дублирования записи в таблице?

Подвал раздела