我正在尝试在 head.inc 文件中包含一些代码,以检查该页面是否以用户的位置语言可用,如果是,它将重定向到该页面。显然,这对 UX 来说不是很好,但可惜我的客户很热衷。
我需要克服的唯一问题是,如果用户已经被重定向,那么不要为每个页面都这样做......存储用户被重定向的事实并且在会话结束之前不要再次这样做。类似的东西。
我已经编写了下面的代码,但是 a) 我不确定这是最好的方法,并且 b) 它似乎卡在了重定向循环中(我认为我已经通过第二次会话检查避免了这种情况)。
我正在使用 ipapi.com 来检查用户的位置。我还在使用 ProcessWire 的“$session”,它实际上与 PHP 会话相同。
if (!$session->get("lucentLightingRegion")) {
$session->set("lucentLightingSessionRedirected", "false");
if ($page->ipapiGetUserLocation()['continent_code'] === 'NA') {
$session->set("lucentLightingRegion", "NA");
if ($page->viewable('na')) {
$url = $page->localUrl('na');
$session->redirect($url);
}
} else {
$session->set("lucentLightingRegion", "INT");
if ($page->viewable('default')) {
$url = $page->localUrl('default');
$session->redirect($url);
}
}
} else {
$sessionRegion = $session->get("lucentLightingRegion");
bd($sessionRegion);
if ($page->viewable($sessionRegion) && $session->get("lucentLightingSessionRedirected") == "false") {
$url = $page->localUrl($sessionRegion);
$session->redirect($url);
$session->set("lucentLightingSessionRedirected", "true");
}
}