powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Откуда функция get_browser(null) по умолчанию берёт user agent ?
18 сообщений из 18, страница 1 из 1
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799085
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если первым параметром функции передать null
Код: php
1.
get_browser(null, true)

то функция вернёт информацию о текущем браузере

Откуда функция get_browser(null) по умолчанию берёт user agent ?
Проверил - НЕ из глобальных переменных $_ENV , $HTTP_ENV_VARS , $_SERVER , $HTTP_SERVER_VARS .
Тогда откуда ещё можно получить user agent ?
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799235
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, user agent функция берёт непосредственно из заголовков запроса.

Только вот getallheaders() у меня не работает (в php 5.3), т.к. php работает как fcgi.
Как ещё можно непосредственно посмотреть заголовки запроса в php 5.3, работающем как fcgi ?
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799340
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://ru2.php.net/manual/ru/function.get-browser.php По умолчанию, используется значение HTTP User-Agent.
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799474
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. не из заголовка запроса ?
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799492
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну заголовки то запроса изначально ловит вебсервер. И раздает их куда надо. Даже засомневался и проверил - усё на месте, в $_SERVER["HTTP_USER_AGENT"] попадает строка юзерагента (Server API CGI/FastCGI, вебсервер Apache 2.2).
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799622
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДаже засомневался и проверил - усё на месте, в $_SERVER["HTTP_USER_AGENT"] попадает строка юзерагентаНо get_browser эту строку не использует.
В переменных $_ENV, $HTTP_ENV_VARS и $HTTP_SERVER_VARS тоже есть строка user agent. Но get_browser и из этих переменных агента не читает.
Единственный вариант - "прямой" доступ к заголовкам, подобно функции getallheaders() ...
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799643
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Но get_browser эту строку не использует.Если я правильно понимаю документацию, первым параметром можно передать строку для анализа. Казалось бы. Однако, у меня почему-то и
Код: php
1.
get_browser($_SERVER["HTTP_USER_AGENT"], true)

не отдает ожидаемое.
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799693
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЕсли я правильно понимаю документацию, первым параметром можно передать строку для анализа. Казалось бы. Однако, у меня почему-то и
Код: php
1.
get_browser($_SERVER["HTTP_USER_AGENT"], true)

не отдает ожидаемое.И что она отдаёт ? Должна отдавать массив с информацией о Вашем браузере.
Если, конечно, в настройках php прописан путь к существующему browscap.ini. Если нет - вернёт false.
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799753
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой браузер в $_SERVER["HTTP_USER_AGENT"] определился как вполне нормальный "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"

Путь к browscap.ini в phpinfo() виден как /etc/php/5.4/cgi/browscap.ini, однако, файл слегка устаревший. Начало его такое:
Код: php
1.
2.
3.
4.
5.
6.
;;; Provided courtesy of http://browsers.garykeith.com
;;; Created on September 19, 2008 at 10:25:25 AM GMT

[GJK_Browscap_Version]
Version=4137
Released=Fri, 19 Sep 2008 10:25:25 -0000



get_browser($_SERVER["HTTP_USER_AGENT"], true) отдает массив без информации о моем браузере (под спойлером):
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
array(30) {
  ["browser_name_regex"]=>
  string(6) "�^.*$�"
  ["browser_name_pattern"]=>
  string(1) "*"
  ["browser"]=>
  string(15) "Default Browser"
  ["version"]=>
  string(1) "0"
  ["majorver"]=>
  string(1) "0"
  ["minorver"]=>
  string(1) "0"
  ["platform"]=>
  string(7) "unknown"
  ["alpha"]=>
  string(0) ""
  ["beta"]=>
  string(0) ""
  ["win16"]=>
  string(0) ""
  ["win32"]=>
  string(0) ""
  ["win64"]=>
  string(0) ""
  ["frames"]=>
  string(1) "1"
  ["iframes"]=>
  string(0) ""
  ["tables"]=>
  string(1) "1"
  ["cookies"]=>
  string(0) ""
  ["backgroundsounds"]=>
  string(0) ""
  ["cdf"]=>
  string(0) ""
  ["vbscript"]=>
  string(0) ""
  ["javaapplets"]=>
  string(0) ""
  ["javascript"]=>
  string(0) ""
  ["activexcontrols"]=>
  string(0) ""
  ["isbanned"]=>
  string(0) ""
  ["ismobiledevice"]=>
  string(0) ""
  ["issyndicationreader"]=>
  string(0) ""
  ["crawler"]=>
  string(0) ""
  ["cssversion"]=>
  string(1) "0"
  ["supportscss"]=>
  string(0) ""
  ["aol"]=>
  string(0) ""
  ["aolversion"]=>
  string(1) "0"
}

...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799762
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleоднако, файл слегка устаревшийВидимо, проблема в этом. Качнул с http://browscap.org/ свежую полную версию full_php_browscap.ini и положил взамен устаревшего. Теперь массив такой:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
array(47) {
  ["browser_name_regex"]=>
  string(61) "�^mozilla/5\.0 \(.*linux x86_64.*\) gecko.* firefox/31\.0.*$�"
  ["browser_name_pattern"]=>
  string(49) "Mozilla/5.0 (*Linux x86_64*) Gecko* Firefox/31.0*"
  ["parent"]=>
  string(12) "Firefox 31.0"
  ["browser_bits"]=>
  string(2) "64"
  ["platform"]=>
  string(5) "Linux"
  ["platform_description"]=>
  string(5) "Linux"
  ["platform_bits"]=>
  string(2) "64"
  ["platform_maker"]=>
  string(16) "Linux Foundation"
  ["win32"]=>
  string(0) ""
  ["device_name"]=>
  string(13) "Linux Desktop"
  ["device_code_name"]=>
  string(13) "Linux Desktop"
  ["comment"]=>
  string(12) "Firefox 31.0"
  ["browser"]=>
  string(7) "Firefox"
  ["browser_type"]=>
  string(7) "Browser"
  ["browser_maker"]=>
  string(18) "Mozilla Foundation"
  ["version"]=>
  string(4) "31.0"
  ["majorver"]=>
  string(2) "31"
  ["frames"]=>
  string(1) "1"
  ["iframes"]=>
  string(1) "1"
  ["tables"]=>
  string(1) "1"
  ["cookies"]=>
  string(1) "1"
  ["javascript"]=>
  string(1) "1"
  ["javaapplets"]=>
  string(1) "1"
  ["cssversion"]=>
  string(1) "3"
  ["device_maker"]=>
  string(7) "Various"
  ["device_type"]=>
  string(7) "Desktop"
  ["device_pointing_method"]=>
  string(5) "mouse"
  ["renderingengine_name"]=>
  string(5) "Gecko"
  ["renderingengine_version"]=>
  string(4) "31.0"
  ["renderingengine_description"]=>
  string(83) "For Firefox, Camino, K-Meleon, SeaMonkey, Netscape, and other Gecko-based browsers."
  ["renderingengine_maker"]=>
  string(18) "Mozilla Foundation"
  ["browser_modus"]=>
  string(7) "unknown"
  ["minorver"]=>
  string(1) "0"
  ["platform_version"]=>
  string(7) "unknown"
  ["alpha"]=>
  string(0) ""
  ["beta"]=>
  string(0) ""
  ["win16"]=>
  string(0) ""
  ["win64"]=>
  string(0) ""
  ["backgroundsounds"]=>
  string(0) ""
  ["vbscript"]=>
  string(0) ""
  ["activexcontrols"]=>
  string(0) ""
  ["ismobiledevice"]=>
  string(0) ""
  ["istablet"]=>
  string(0) ""
  ["issyndicationreader"]=>
  string(0) ""
  ["crawler"]=>
  string(0) ""
  ["aolversion"]=>
  string(1) "0"
  ["device_brand_name"]=>
  string(7) "unknown"
}

...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799799
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторget_browser($_SERVER["HTTP_USER_AGENT"], true) отдает массив без информации о моем браузере (под спойлером):Так и должно быть. get_browser всегда возвращает массив при любом непустом user agent .
При этом если браузер в browscap.ini не найден, поля массива принимают значения по умолчанию (unknown).
А у Вас файл древнющий - 2008 года. Тогда 31-й Mozilla'ы ещё не было.
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799800
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвозвращает массивили объект, в зависимости от 2-го параметра
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799808
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю провести вот такой тест:
Код: php
1.
2.
3.
4.
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
$_SERVER['HTTP_USER_AGENT'] = 'Teleca-Obigo (JAVA): ALCATEL_2010X/1.0 ObigoInternetBrowser/Q03C';
$info = get_browser(null, true);
$_SERVER['HTTP_USER_AGENT'] = $HTTP_USER_AGENT; print_r($info);


Какой браузер покажет функция ?
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799809
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Какой браузер покажет функция ?Показала мой реальный браузер.
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38799969
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleCyrax_02Какой браузер покажет функция ?Показала мой реальный браузер.
А нужно получить браузер Obigo . При этом первым параметром функции get_browser должен быть null .
Такую задачу решить сможете ?
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38800148
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Такую задачу решить сможете ?Вряд ли. Если только в исходниках покопаться... Но я не столь большой любитель этих дел )))


Cyrax_02При этом первым параметром функции get_browser должен быть null .Просто интересно, если не секрет, конечно. Почему нельзя использовать $_SERVER['HTTP_USER_AGENT'] первым параметром?
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38800647
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВряд ли. Если только в исходниках покопаться...
Т.е. Вы и предположить не можете, откуда get_browser может брать user_agent ?
...
Рейтинг: 0 / 0
Откуда функция get_browser(null) по умолчанию берёт user agent ?
    #38800760
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02авторВряд ли. Если только в исходниках покопаться...
Т.е. Вы и предположить не можете, откуда get_browser может брать user_agent ?Оттуда же, откуда берутся все значения в $_SERVER. В зависимости от api: для CGI - из переменных окружения, для fastcgi/apache - передаются в запросе в соответствии со спецификациями api
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Откуда функция get_browser(null) по умолчанию берёт user agent ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]