- Пренасочване по гео локация?
WT форуми -> PHP MySQL ASP.NET -> Пренасочване по гео локация?
Създайте нова тема Напишете отговор 
Автор Съобщение
canon1d1v
Нов
Нов

Регистриран на: 13/11/2009 3:10 am

Support: 0
Bonus: 0
Мнения: 64
Мнение 26/02/2018 12:52 pm     Пренасочване по гео локация? Отговорете с цитат


Здравейте група! Smile

Интересувам се как може да се пренасочи от една страница към други спрямо локацията на потребителя?

Благодаря за помоща!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 147
Bonus: 293
Мнения: 1377
Мнение 26/02/2018 5:50 pm      Отговорете с цитат


Така взимаш държавата:

http://php.net/manual/en/function.geoip-country-name-by-name.php

Така пренасочваш:

https://stackoverflow.com/a/768472

Сега вече двете си ги комбинираш както ти трябва.
Примерно

PHP code:
if($country == "Bulgaria") header('Location: ./?lang=bg');
else header('Location: ./?lang=en');
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 46
Bonus: 92
Мнения: 610
Мнение 26/02/2018 6:06 pm      Отговорете с цитат


Nah...

Ще се спука от if-elseif-else блокове или switch cases. Най-добре да използва тази функция и направо да си взима кода.
Да направи един масив с налични локации и да прави проверка. Така резултата ще е само с един if-else блок, за да е сигурен, че ако няма налична версия/локация на сайта да пренасочва примерно към US/UK/BG версия - някоя която ще е по подразбиране.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 1
Bonus: 2
Мнения: 67
Мнение 27/02/2018 8:12 pm      Отговорете с цитат


anonimen написа:
Така взимаш държавата:

http://php.net/manual/en/function.geoip-country-name-by-name.php

Така пренасочваш:

https://stackoverflow.com/a/768472

Сега вече двете си ги комбинираш както ти трябва.
Примерно

PHP code:
if($country == "Bulgaria") header('Location: ./?lang=bg');
else header('Location: ./?lang=en');

и после -
https://www.facebook.com/photo.php?fbid=1889055881165850&set=gm.2093244047579348&type=3&permPage=1&ifg=1
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
anonimen
Активен
Активен

Регистриран на: 11/06/2012 8:07 pm

Support: 147
Bonus: 293
Мнения: 1377
Мнение 02/03/2018 12:59 am      Отговорете с цитат


E добре де, нито съм казвал, нито съм намеквал да изрежда if-чета едно след друго. Дадох кратък пример, колкото да илюстрира употребата на кода от двата линка.

Темата не е за принципи и правилно структуриране на кода, практики и т.н., а за 'Пренасочване по геолокация'. Или поне към момента такова е заглавието, такъв е и въпросът.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 119
Bonus: 231
Мнения: 3057
Мнение 02/03/2018 3:14 pm      Отговорете с цитат


Или от User Agent (браузър) стринга да си извежда езика по подразбиране с който браузъра се логва и готово.


(Моят варянт е най-малко предпочитаният, защото е доста неточен, но има по-стари проекти базирани на него)
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 46
Bonus: 92
Мнения: 610
Мнение 03/03/2018 2:37 pm      Отговорете с цитат


anonimen написа:
E добре де, нито съм казвал, нито съм намеквал да изрежда if-чета едно след друго. Дадох кратък пример, колкото да илюстрира употребата на кода от двата линка.

Темата не е за принципи и правилно структуриране на кода, практики и т.н., а за 'Пренасочване по геолокация'. Или поне към момента такова е заглавието, такъв е и въпросът.


Не казвам, че си казал. Кода го показва. Следователно, щом пита такъв въпрос е почти 100% сигурно, че ще нареди 200 ифа.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
deam0n
Tourist Defender

Регистриран на: 01/10/2005 6:33 pm

Support: 199
Bonus: 951
Мнения: 2952
Мнение 06/03/2018 5:33 pm      Отговорете с цитат


Revelation написа:
anonimen написа:
E добре де, нито съм казвал, нито съм намеквал да изрежда if-чета едно след друго. Дадох кратък пример, колкото да илюстрира употребата на кода от двата линка.

Темата не е за принципи и правилно структуриране на кода, практики и т.н., а за 'Пренасочване по геолокация'. Или поне към момента такова е заглавието, такъв е и въпросът.


Не казвам, че си казал. Кода го показва. Следователно, щом пита такъв въпрос е почти 100% сигурно, че ще нареди 200 ифа.


Реално погледнато всичко се свежда до 1 ред Very Happy Laughing Laughing

PHP code:
if($country == 'Russia') { .. }
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 119
Bonus: 231
Мнения: 3057
Мнение 06/03/2018 8:19 pm      Отговорете с цитат


Реално погледнато, ако човека има 10 езика на сайта, то ще има 10 if условия или 10 case; Аз не бих ползвал пълното име на държавите а само примерно BG, EN и др. Така или иначе трябва да се опишат някъде тези условия и при всяко какво да се прави. Виждал съм много приятни switch case рутери, които просто при въведен стринг ако имаш такъв превод на сайта го взима и визуализира. Културно решение за мен би било, да се взима стринга на държавата в стандартизираният двубуквен вид и от там подавайки стринга в метод или функция да се проверява има ли го няма ли го и да се взима решение на база въведен стринг. Имаш 5 езика описваш класовете, отговарящи за тях и ги викаш при определената от теб логика, в случаят по геолокация.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети