Coder Social home page Coder Social logo

hcodes / server_yametrika Goto Github PK

View Code? Open in Web Editor NEW
73.0 14.0 19.0 109 KB

Серверное отслеживание посетителей с помощью Яндекс.Метрики

Home Page: https://packagist.org/packages/hcodes/server_yametrika

License: Other

PHP 100.00%
php metrika analytics yandex-metrika yandex-metrica

server_yametrika's Introduction

hcodes/server_yametrika

Packagist Version Packagist Downloads Packagist License

Серверное отслеживание посетителей с помощью Яндекс.Метрики для PHP.

В некоторых случаях требуется отслеживать действия на стороне сервера без JavaScript.

Например:

  • Слежка за поисковыми роботами
  • Редиректы
  • Загрузка файлов
  • Страницы с ошибками (403, 404, 500)
  • RSS
  • Время выполнения скриптов
  • Время запросов к базам данных
  • Треккинг AJAX-запросов
  • и пр.

Возможности

Серверная реализация сделана по аналогии с JavaScript-реализацией.

  • Посещение страницы hit()
  • Достижение цели reachGoal()
  • Внешняя ссылка extLink()
  • Загрузка файла file()
  • Параметры визита params()
  • Неотказ notBounce()

Яндекс.Метрика принимает хиты только по https-протоколу, не забудьте проверить поддержку SSL в PHP.

Настройки счётчика Метрики

В настройках счётчика во вкладке «Фильтры» / «Фильтрация роботов» необходимо выбрать опцию «Учитывать посещения всех роботов». В противном случае, статистика собираться не будет.

Ограничения

Отчёты, которые будут недоступны в Метрике при серверной отправки:

  • Половозрастная структура
  • Пол и возраст
  • Разрешения дисплеев
  • Вебвизор, аналитика форм
  • Карта кликов

Уникальные посетители считаются по User Agent и IP-адресу.

Установка

composer require hcodes/server_yametrika

API

Посещение страницы

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики

// Все параметры по умолчанию.
$counter->hit(); // Значение URL и referer берутся по умолчанию из $_SERVER

// Отправка хита с абсолютными урлами.
// page_url, title, referer
$counter->hit('https://mysite.org', 'Main page', 'https://ya.ru');

// Отправка хита с относительными урлами.
$counter->hit('/index.html', 'Main page', '/back.html');

// Отправка хита вместе с параметрами визитов.
$userParams = ['param' => 1, 'param2' => 2];
$counter->hit('https://mysite.org', 'Main page', 'https://ya.ru', $userParams);

// Отправка хита вместе с параметрами визитов и с запретом на индексацию.
$userParams = ['param1' => 1, 'param2' => 2];
$counter->hit(
    'https://mysite.org',
    'Main page',
    'https://ya.ru',
    $userParams,
    'noindex'
);

?>

Достижение цели

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики.
// Внимание! Перед вызовом методов reachGoal должен вызван метод hit(...),
// чтобы была корректная привязка цели к визиту.
$counter->reachGoal('goal_name');

// С параметрами визита.
$counter->reachGoal('goal_name', ['param1' => 1, 'param2' => 2]);

?>

Внешняя ссылка, отчёт «Внешние ссылки»

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики.
$counter->extLink('https://yandex.ru');

// С названием ссылки.
$counter->extLink('https://yandex.ru', 'Яндекс');

?>

Загрузка файла, отчёт «Загрузка файлов»

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики.

$counter->file('https://mysite.org/archive.zip');

// С названием ссылки.
$counter->file('https://mysite.org/archive.zip', 'Архив рассылки');

?>

Отправка пользовательских параметров, отчёт «Параметры визитов»

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики.

$counter->params(['level1' => ['level2' => 1]]);

?>

Неотказ

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики.

$counter->notBounce();

?>

Примеры применения

Какие программы используют посетители для чтения RSS?

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики.
// Просмотр статистики в отчёте «Параметры визитов», ветка RSS → User Agent.
$counter->params(['RSS' => ['User Agent' => $_SERVER['HTTP_USER_AGENT']]]);

?>

Слежка за роботами за скачкой robots.txt

Добавляем в корневой .htaccess строку "RewriteRule ^robots.txt$ robots.php" и создаём в корне файл robots.php с содержанием:

<?php

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(123456); // Номер счётчика Метрики.
// Просмотр статистики в отчёте «Параметры визитов», ветка Robots.txt → User Agent.
$counter->params(['Robots.txt' => ['User Agent' => $_SERVER['HTTP_USER_AGENT']]]);

$txt = file_get_contents('robots.txt');

header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Type: text/plain');

print $txt;

?>

Полезные ссылки

MIT License

server_yametrika's People

Contributors

hcodes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

server_yametrika's Issues

Не работает на PHP8

Здравствуйте. Спасибо за ваши труды, использую на PHP 7, обновился и ловлю 500 ошибку при обращении, тестировал на двух разных VPS с PHP 8, планируете добавить поддержку?

Warning: Undefined array key "HTTP_REFERER" in /home/udder/web/domain.ru/public_html/yametrika.php on line 62

Fatal error: Uncaught Error: Call to undefined function each() in /home/udder/web/domain.ru/public_html/yametrika.php:255 Stack trace: #0 /home/udder/web/domain.ru/public_html/yametrika.php(207): YaMetrika->buildQueryVars() #1 /home/udder/web/domain.ru/public_html/yametrika.php(78): YaMetrika->hitExt() #2 /home/udder/web/domain.ru/public_html/php.php(7): YaMetrika->hit() #3 {main} thrown in /home/udder/web/domain.ru/public_html/yametrika.php on line 255

Отправка целей

Не работает отправка целей. Не пишется ничего в метрике. Настройки проверил, про ботов.
Потом посмотрел в инспекторе, сейчас цель отправляется вообще GET запросом

Почему-то не работает

Здравствуй
Делаю так:

require_once __DIR__ . '/vendor/autoload.php';

use ServerYaMetrika\YaMetrika;

$counter = new YaMetrika(******);

$hit  = $counter->hit('/index.html', 'Site', 'https://ya.ru');
$goal = $counter->reachGoal('test');

У обоих ответ true, но в Аналитике ничего. Подскажи, что не так. Спасибо.

Package zendframework/zend-diactoros is abandoned, you should avoid using it. Use laminas/laminas-diactoros instead.

Во время установки composer require hcodes/server_yametrika
Информация в консоли содержит Package zendframework/zend-diactoros is abandoned, you should avoid using it. Use laminas/laminas-diactoros instead.
Игнорировать это сообщение или как фиксить?

Использую вариант интеграции следующий:

<?php
require_once('yametrika.php');
$counter = new YaMetrika(57098764);
$counter->hit();
?>

Скажите пожалуйста для чего такой вариант?
$counter->hit('https://mysite.org', 'Main page', 'https://ya.ru');

В каких случаях такой вариант использовать? Я должен подставить свой урл вместо https://mysite.org?

Как интегрировать счетчик на виртуальном хостинге?

В новой версии установка через composer, скачать архив и использовать файл YaMetrika.php тоже можно на виртуальном хостинге, но интеграция для новой версии отличается?
Раньше я использовал так

require_once('YaMetrika.php');
$counter = new YaMetrika(57098743);
$counter->hit();

Теперь только так

require_once('YaMetrika.php');
use ServerYaMetrika\YaMetrika;
$counter = new YaMetrika(57098755);
$counter->hit();

Если не прописать use ServerYaMetrika\YaMetrika; , то отдает 500 ошибку.

@hcodes

Можно ли обойтись без обратного слеша при Юзинге ? use ServerYaMetrika\YaMetrika;

Собственно вопрос. Хочу интегрировать код в WP через плагин https://ru.wordpress.org/plugins/code-snippets-extended/
Но при вставки, use ServerYaMetrika\YaMetrika; обрезается обратный слеш и получается use ServerYaMetrikaYaMetrika; (дело понятно не в вашей разработки и не в параметрах PHP, какая - то не совершенность плагин, вот и думаю как можно закостылить)

Как интегрировать новую версию метрики на виртуальном хостинге?

В новой версии установка через composer, скачать архив и использовать файл YaMetrika.php тоже можно на виртуальном хостинге, но интеграция для новой версии отличается?
Раньше я использовал так

hit(); ?>

Теперь только так

hit(); ?>

Если не прописать use ServerYaMetrika\YaMetrika; , то отдает 500 ошибку.

Можно ли использовать эту бибиотеу вмесе с js счечиком

Проблема следующая
Часто бывает так когда смотриш конверсию в метрике заказ не отправляется js счетчиком например человек отпивал форму и сразу закрыл страницу благодарности

А если в день всего 5 заявки и одна из них пропала то данные точно не верны на 20% а это много

Хотелось бы отправлять цель в момент когда обрабатывается форма на сервере. В этот моет нам известны куки с ид пользователя. Есть ли возможность передать ид пользователя чрез $counter->params или каламбурить другим способом

Сохранение Cookie

Сохраняет ли библиотека куки Яндекс.Метрики в браузере пользователя?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.