Как проверить версию php на windows

Статистика доступа к PHP — обнаружение операционной системы

В этой статье мы продолжим предыдущее обнаружение браузеров и поговорим о том, как узнать еще одну часть информации о посетителе — используемую операционную систему. Наконец, мы оценим данные о браузерах, их надстройках и операционных системах, включая простое графическое представление.

Вы можете просматривать и тестировать готовое приложение как обычно. В этой пробной версии ведется статистика доступа к странице http://www.cchechia.cz/help/.

Процедура, с помощью которой мы находим информацию об операционной системе, очень похожа на процедуру, с помощью которой мы находим информацию о браузере. Из предыдущей статьи мы знаем, что заголовок User-Agent содержит помимо информации о браузере информацию о платформе, на которой работает браузер. Однако определение операционной системы немного сложнее, чем определение браузера. Большинство операционных систем (ОС) отчитываются по-разному, что показано в следующей таблице:

ОС Пример заголовка
Windows ME Mozilla/4.0 (совместимый; MSIE 5.5; Windows 98; Win 9x 4.90)
Windows ME Opera/6.0 (Windows ME; U) [cs]
Windows 98 Mozilla/4.75 [en] (Win98; U)
Windows 98 Mozilla/4.0 (совместимый; MSIE 4.01; Windows 98)
Windows 98 Mozilla/4.0 (совместимо; Opera/3.0; Windows 4.10) 3.50
Windows 95 Mozilla/4.0 (совместимый; MSIE 5.5; Windows 95)
Windows 95 Mozilla/4.05 [en] (Win95; I)
Windows 2000 Mozilla/4.0 (совместимый; MSIE 5.0; Windows 2000) Opera 6.0 [cs]
Windows 2000 Mozilla/4.0 (совместимый; MSIE 6.0; Windows NT 5.0)
Windows XP Mozilla/4.0 (совместимый; MSIE 6.0; Windows NT 5.1)
Windows XP Mozilla/4.0 (совместимый; MSIE 5.0; Windows XP) Opera 6.0 [cs]
Windows NT Mozilla/4.0 (совместимый; MSIE 5.01; Windows NT)
Windows NT Mozilla/4.5 [en] (WinNT; I)
Windows NT Mozilla/5.0 (Windows; U; WinNT4.0; en- США; rv:0.9.2)
Macintosh Mozilla/4.0 (совместимый; MSIE 5.0; Mac_PowerPC)
Macintosh Mozilla/4.5 (совместимый; iCab Pre2.2; Macintosh; I; PPC)
Windows 3.x Mozilla/2.0 ( Win16; I)
Windows 3.x Mozilla/2.0 (совместимый; MSIE 3.02; Windows 3.1)
Linux Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6+) Gecko/20011122
SunOS Mozilla/4.7 [ru] (X11; I; SunOS 5.5.1 sun4m)
Читайте также:  Как переустановить windows на ноутбуке irbis

Таблица снова показывает необходимость соблюдения определенного порядка при обнаружении. Например, обнаружение Windows ME должно выполняться до обнаружения Windows 98, поскольку заголовок Windows ME часто также содержит текст Windows 98 . Точно так же Windows 2000 и XP должны быть более ранними, чем Windows NT и т. д.

Таблица операционных систем

Все данные об операционных системах мы будем хранить в таблице os , которую создадим с помощью этого SQL-запроса:

CREATE TABLE os (
id int(11) NOT NULL,
name varchar(50) NOT NULL,
os_regexp varchar(70) NOT NULL,
PRIMARY KEY (id)
)

  • id — уникальный идентификатор каждой операционной системы (первичный ключ)
  • имя – название операционной системы
  • os_regexp – регулярное выражение, определяющее данную ОС

При вставке записей в таблицу мы должны следовать порядку, который я только что упомянул. В связипояснено в предыдущей статье, мы пишем метасимвол «.» вместо пробелов в элементе os_regexp . Тот факт, что каждая операционная система может представлять себя несколькими способами, решается очень просто — с помощью метасимвола «элементы ось .

// ОС
$query = mysql_query(«SELECT id FROM os WHERE ‘$http_user_agent’ REGEXP os_regexp ORDER BY id LIMIT 0.1»);
if ($result = mysql_fetch_array($query))
$os = $result[‘id’];
иначе
$ось = 0;

Оценка данных браузера и операционной системы

Полученную статистику заносим в таблицу с тремя столбцами — Название браузера или ОС, Количество обращений с данным ПО и Доля в процент + графическое представление.

Браузеры

‘;
эхо ‘

‘;
echo ‘

‘;

Теперь нам нужно получить статистику браузера за заданный период ( $sql_access_date ) из таблицы access , для чего нам нужны только два данных – название браузера и количество обращений с этим браузером. Мы делаем все путем объединения таблиц browser и access , где запись id в таблице browser является первичным ключом, а browser запись в таблице access по внешнему ключу (содержит первичные ключи из таблицы browser). Мы группируем записи в группы, определяемые элементом browser (уникальный идентификатор браузера), и сортируем их в порядке убывания (DESC) в соответствии с представлением отдельных браузеров. Аналогичную процедуру мы будем использовать и в других статьях, поэтому, если вам не совсем понятно объединение таблиц и использование функций агрегации (например, count ), изучите статьи Запросы в SQL (II.) и Запросы в SQL с агрегацией.

Поскольку мы также покажем долю отдельных браузеров графически, нам нужно знать, сколько обращений было зарегистрировано с помощью наиболее часто используемого браузера. Мы узнаем это с помощью функции mysql_result(), где первый параметр указывает результат, второй — номер записи, а третий — имя элемента, причем записи нумеруются с нуля. Поскольку мы по-прежнему будем работать с записями из базы данных, мы должны использоватьmysql_data_seek() для перемещения указателя результата на первую запись.

// выбираем браузеры в соответствии с их представлением
$query = mysql_query(«ВЫБЕРИТЕ имя, количество(браузер) КАК count_it ОТ доступа ПРИСОЕДИНЯЙТЕСЬ к браузеру ВКЛ (browser = browser.id) ГДЕ $sql_access_date СГРУППИРОВАТЬ ПО браузеру ПОРЯДОК ПО count_it ДЕСК»);
$max = mysql_result($query, 0, ‘count_it’) // количество обращений с наиболее часто используемым браузером
$move = mysql_data_seek($query, 0) // снова переходим к началу

Наконец мы можем начать записывать данные в таблицу. Для каждого браузера нам нужно рассчитать ширину изображения, представляющего долю этого браузера. Мы сделаем это с помощью математического трехчлена, где изображение для браузера с наибольшей долей будет иметь ширину 200 точек. Мы также можем легко рассчитать процент обращений с помощью данного браузера к общему количеству обращений за заданный период ($viewpages). Затем мы записываем полученные данные в таблицу.

в то время как($result = mysql_fetch_array($query)) <
$width = round($result[‘count_it’]/$max*200); // ширина изображения, показывающего долю
$rate = sprintf(‘%.2f’, $result[‘count_it’]/($pageviews/100)); // процентная доля
echo ‘

‘;
>
echo »

Имя Количество Поделиться
‘ . $результат[‘имя’] . ‘ ‘ . $результат[‘count_it’] . ‘ ‘ . $ ставка. ‘%
Читайте также:  Как проверить папку windows на ошибки

\n\n»;

Как и статистика браузера, мы также будем создавать статистику операционной системы.

// ОПЕРАЦИОННЫЕ СИСТЕМЫ
echo ‘

Операционные системы

‘;
эхо ‘

‘;
echo ‘

‘;
// выбираем операционные системы в соответствии с их представлением
$query = mysql_query(«SELECT name, count(os) AS count_it FROM access JOIN os ON (os = os.id) WHERE $sql_access_date СГРУППИРОВАТЬ ПО os ORDER BY count_it DESC»);
$max = mysql_result($query, 0, ‘count_it’); // количество обращений sпо наиболее часто используемой операционной системе
$move = mysql_data_seek($query, 0); // снова переходим к началу
while($result = mysql_fetch_array($query)) <
$width = round($result[‘count_it’]/$max*200); // ширина изображения, показывающего долю
$rate = sprintf(‘%.2f’, $result[‘count_it’]/($pageviews/100)); // процентная доля
echo ‘

‘;
>
эхо «

Имя Количество Поделиться
‘ . $результат[‘имя’] . ‘ ‘ . $результат[‘count_it’] . ‘ ‘ . $ ставка. ‘%

\n\n»;

Подобно предыдущей статистике, мы также создадим статистику надстроек браузера. Однако мы еще немного поиграем с ним. Мы будем создавать статистику не только по используемой надстройке, но и по используемому браузеру. Это хороший пример того, как несколько таблиц могут быть связаны друг с другом, что становится еще более важным, когда несколько надстроек используют разные механизмы рендеринга, как, например, в случае с MyIE2.

// БРАУЗЕР — расширения
$query = mysql_query(«ВЫБЕРИТЕ count(id) FROM access WHERE $sql_access_date AND brow_add_on <> 0»);
$result = mysql_fetch_array($query);
$count_add_on = $result[‘count(id)’];
if($count_add_on != 0) <
эхо ‘

Браузеры — расширения

‘;
эхо ‘

‘;
echo ‘

‘;
$width = round($count_add_on/$pageviews*200); // ширина изображения, показывающая долю
$rate = sprintf(‘%.2f’, $count_add_on/($pageviews/100)); // процентная доля
echo ‘

‘;
// выбираем дополнения в соответствии с их представлением
$query = mysql_query(«SELECT browser.name AS browser_name, browser_add_on.name AS add_on, count(browser) AS count_it FROM access JOIN browser ON (browser = browser .id) ПРИСОЕДИНЯЙСЯbrowser_add_on (brow_add_on = browser_add_on.id) ГДЕ $sql_access_date СГРУППИРОВАТЬ ПО браузеру, brow_add_on ORDER BY count_it DESC”);
$max = mysql_result($query, 0, ‘count_it’); // количество обращений с самой часто используемой надстройкой
$move = mysql_data_seek($query, 0); // снова переходим к началу
while($result = mysql_fetch_array($query)) <
$width = round($result[‘count_it’]/$pageviews*200); // ширина изображения, показывающего долю
$rate = sprintf(‘%.2f’, $result[‘count_it’]/($pageviews/100)); // процентная доля
echo ‘

‘;
>
эхо «

Браузер Расширение Количество Поделиться
Всего ‘ . $count_add_on . ‘/’. $просмотры страниц . ‘ ‘ . $ ставка. ‘%
‘ . $результат[‘имя_браузера’] . ‘ ‘ . $результат[‘дополнение’] . ‘ ‘ . $результат[‘count_it’] . ‘ ‘ . $ ставка. ‘%

\n\n»;
>

Все дело в браузерах и операционных системах.

Ссылки, ресурсы

  • RFC 2616 — глава 14.43 содержит краткое упоминание о заголовке User-Agent
  • User Agents — более десяти тысяч различных заголовков User-Agent

Примечание редактор: Эта статья была впервые опубликована 30 мая 2002 г. Исходная версия статьи и связанные с ней обсуждения доступны в ZIP-архивах.

Старые комментарии к статье

Если вас интересуют старые комментарии к этой статье, вы можете найти их здесь.

Читайте также:  Wifi адаптер для компьютера как подключить windows 10
Поделиться с друзьями
ОС советы