Установить URL-адрес той же страницы при перенаправлении IP2Location
Я собираюсь использовать Redirect Visitors by Country, я использую IP2LOCATION
Это мой код:
require_once('vendor/geoplugin.class.php');
$geoplugin = new geoPlugin();
$geoplugin->locate();
$var_country_code = $geoplugin->countryCode;
if ($var_country_code == "IN") {
header('Location: index.php?lang=in');
}
if ($var_country_code == "MY") {
header('Location: index.php?lang=my');
}
Я добавил этот код выше в заголовок моего файла index.php, проблема в том, что страница постоянно обновляется.
Index.php будет правильно перенаправлять, например, на index.php? Lang=in, но он продолжает обновляться...
Я пробовал выйти; сломать; метаобновление, session_start(); и другие методы. Мне нужно добавить начало сеанса, зарегистрировать сеанс и установить файл cookie, только один раз, когда после перенаправления на язык по стране посетителя пользователь сможет изменить язык после этого.
А вот мой языковой код:
session_start();
header('Cache-control: private');
if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}
Как решить эту проблему?
заранее спасибо
1 ответ
Сохраните свое местоположение в переменной сеанса, и если она уже установлена, сеанс определения местоположения не нужно будет снова обновлять, что приведет к разрыву цикла перенаправления. Код языка не нужен.
session_start();
require_once('vendor/geoplugin.class.php');
if(!$_SESSION['location']){
$geoplugin = new geoPlugin();
$geoplugin->locate();
$var_country_code = $geoplugin->countryCode;
$_SESSION['location'] = $var_country_code;
if ($var_country_code == "IN") {
header('Location: index.php?lang=in');
}
if ($var_country_code == "MY") {
header('Location: index.php?lang=my');
}
}