Сниппет для получения всякой информации о пользователе

Делал как-то для tiptop , может еще кому пригодится: https://github.com/Pathologic/userEnv. С помощью сниппета можно получить такие данные: IP, браузер, географические данные (страна, регион, город, координаты). Для получения геоданных используется база Sypex Geo City (UTF-8), базу нужно периодически обновлять.

Сниппет можно указать в параметре prepare или prepareProcess при вызове FormLister, тогда можно будет использовать плейсхолдеры [+env.ip+], [+env.browser+], [+env.country+], [+env.region+], [+env.city+], [+env.coords+].

Можно и как обычный сниппет вызвать, указав чанк в параметре &tpl. Плейсхолдеры будут без префикса env. Например:

[!
userEnv?
&tpl=`@CODE:Ваш IP: [+ip+]`
!]

4 комментария

avatar
Спасибо, интересная штука, первое что пришло в голову — прикрутить к обратному звонку определитель с какого города просят позвонить))

Только браузер как-то не понятно определяет:
Хром
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36

Мазила
Mozilla/5.0 (Windows NT 6.1; rv:51.0) Gecko/20100101 Firefox/51.0

Опера
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1144

IE
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)

Сафари (у меня старенький для винды)
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
  • paic
  • 0
avatar
Это user agent, а не браузер на самом деле. Библиотек для более внятного определения полно, прикрутить не сложно, если необходимость возникнет.
avatar
Русские названия стран — это хорошо, но часто нужно вот это

$env['country_iso'] = $SxGeo->getCountry($env['ip']);


Пришлось сразу и добавить :)
avatar
вчера хотел прикрутить к одному из сайтов — и этот хороший сниппет почему-то не запустился, хотя в прошлом году я его успешно тестировал((
Вызывал как отдельный сниппет
[!userEnv? &tpl=`@CODE:Ваш IP: [+ip+]`!]

показывает только [+ip+] и [+browser+], остальные плейсхолдеры - [+country+], [+region+], [+city+], [+coords+] - если подставить в вызов вместо [+ip+], не выводится.
Например, так уже вместо плейхолдера ничего ничего не показывает, только текст «Ваш город:»
[!userEnv? &tpl=`@CODE:Ваш город: [+city+]`!]

Тестировал на версиях 1.1 и 1.4.0
Базу обновил
sypexgeo.net/ru/download/
файл SxGeo.php там прежний.
Хостинг тот же, только версия php в прошлом году была 5.4, а сейчас 5.6.
Куда копнуть?
Спасибо.
  • paic
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.