Я работаю над глобальным промежуточным программным обеспечением Laravel для установки значения страны в файле cookie, когда веб-посетители получают доступ к веб-сайту.
По этой причине я создаю следующую функцию:
public function handle($request, Closure $next)
{
if(!$request->cookies->has('geo'))
{
if (!$request->cookies->has('geo') && GeoIP()->getLocation()->iso_code !== null) {
//find customer IP location
$code = strtolower(GeoIP()->getLocation()->iso_code);
// creates a cookie with iso_code value
$cookie = cookie('geo', $code, 600);
//move to page
return $next($request)->cookie($cookie);
}
else{
return response()->view('static.select-country');
//move to page
return $next($request);
}
}
if ($request->cookies->has('geo')) {
//move to page
return $next($request);
}
}
1-Если cookie 'geo' имеет значение NULL:
- Первое: cookie 'Geo' имеет значение NULL, а детектор Torann GeoIp не равен NULL -> создать cookie со страной ISO_CODE
- Else (geo cookieимеет значение null && GeoIP детектор имеет значение null) -> перейдите на страницу select-country.phtml, чтобы выбрать свою страну и установить cookie вручную.
2 - Если cookie geo не является нулевым кодом: ($ request-> cookies-> has ('geo'))
- У посетителя уже есть cookie -> перейти на страницу.
(моя идея для шага 2для существующих клиентов, у которых уже есть страна (уже есть файл cookie с этим значением), но они хотят вручную изменить страну в представлении static.select-country и избежать переопределения детектора GeoIP с помощью цикла 1.)
Моя проблема: в этот момент, когда клиент выбирает вручную в static.seПри просмотре лекционной страны он перемещается на домашнюю страницу:
- Но приложение назначает cookie с помощью детектора GeoIP вместо того, чтобы учитывать выбранную вручную страну (cookie, созданную в static.select-country) клиентом.