# KClient PHP
Обратите внимание!
Доступно только в профессиональной и бизнес редакциях
- Возможности
- Подключение
- Инициализация клиента
- Описание методов клиента
- Как сделать ссылку на оффер?
- Отправка постбека
- FAQ по KClient PHP
- Как подключить к Wordpress?
- Как передать title в качестве ключевика?
- Как показывать HTML код из потока в определенном месте лендинга?
- Как решать проблемы с KClient PHP?
- Как оставлять пользователя на сайте при срабатывании определенного потока?
- Как проверить, считает ли Keitaro пользователя ботом?
- Как указать путь до kclient.php при наличии папок?
- Почему на сайте виден php-код и сам он не выполняется?
- Почему в браузере ошибка TOOMANYREDIRECTS
- Почему в логе трафика http-редирект, но по факту не происходит?
- Как передать subid клика используя KClient PHP?
- Как получить subid на второстепенных страницах?
- Как использовать KClient PHP на внутренних страницах и не заводить новый клик?
- Расшифровка ошибок при запросе
KClient.php - это готовый клиент (скрипт интеграции), который собран на основе Click Api V3. В нем уже собраны основные методы работы Click Api v3, а также автоматический проброс клика и интерпретация ответа трекера.
# Возможности
- Передача информации о текущем клике в Keitaro.
- Передача параметров из адресной строки.
- Получение subid клика.
- Обработка и выполнение инструкций Keitaro: показ текста, выполнение редиректа, вызов оффера.
Гайд с подключением KClient.php
# Подключение
- Зайдите в Keitaro, на страницу кампании.
- Перейдите в окно «Интеграция».
- Выберите «KClient PHP».
- Скопируйте код и вставьте в index вашего сайта, в самом начале, начиная с 1 строки.
- Скачайте файл kclick_client.php и положите его в директорию вашего сайта, рядом с index файлом.
# Инициализация клиента
require_once 'kclient.php'; // файл должен быть загружен в одну директорию с index файлом
$client = new KClient('https://domain_tracker/api.php?', 'token');
# Описание методов клиента
Метод | Описание |
---|---|
$client->sendAllParams(); | Передача параметров из адресной строки |
$client->forceRedirectOffer(); | Если в потоке был выбран оффер, то выполнить редирект на него. В ином случае нужно использовать getOffer() |
$client->params('param1=c¶m2=b'); | Передача строки параметров |
$client->param('extra_param_5', '123'); | Альтернативный способ передачи параметра |
$client->sendUtmLabels(); | Передача из адресной строки только utm-меток |
$client->debug(); | Показ отладочной информации |
$client->currentPageAsReferrer(); | Отправить адрес текущей страницы в качестве реферера |
$client->keyword('KEYWORD'); | Использование значения 'KEYWORD' в качестве ключевика |
$client->execute(); | Выполнение инструкций Keitaro и с продолжением выполнения кода страницы |
$client->executeAndBreak(); | Выполнение инструкций Keitaro с остановкой выполнения страницы. Если передано действие в потоке «Ничего не делать», остановки не произойдет. |
$client->getOffer(); | Получение ссылки на оффер. В кампании должен быть поток со схемой «Офферы», иначе результат 'no_offer'. |
$client->getBody(); | Получение содержимого 'body'. |
$client->getHeaders(); | Получение заголовков (headers) |
$client->isUnique(level); | Статус уникальности (варианты level: stream, campaign, global) |
$client->isBot(); | Статус бота |
$client->disableSessions(); | Отключение куки PHP сессии (без этой куки restoreFromSession не будет работать) |
$client->restoreFromQuery(); | Ловит параметры _subid и _token из запроса и не заводит нового клика |
$client->restoreFromSession(); | Восстанавливает предыдущее посещение из сессии и не заводит нового клика |
# Как сделать ссылку на оффер?
Пример использования KClient.php для генераци ссылки на оффер:
<?php
require_once dirname(__FILE__) . '/kclient.php';
$client = new KClient('https://domain_tracker/api.php?', 'wzbfwg3dxlmttkvt5v63mbw3x');
?>
<html>
...
<body>
<a href="<?php echo $client->getOffer() ?>">CLICK!</a>
</body>
</html>
В потоке должна использоваться схема «Лендинги» или «Офферы».
Если нужно вызвать определенный оффер, передавайте параметр offer_id
:
<a href="<?php echo $client->getOffer(array('offer_id' => 123), '#');?>">LINK</a>
Если есть вероятность, что трекер не вернет оффер, можно выставить ссылку по умолчанию вторым параметром:
<a href="<?php echo $client->getOffer(null, 'http://ya.ru');?>">LINK</a>
# Отправка постбека
Для отправки постбека, вам потребуется subid
, его можно получить через $client->getSubid();
и положить в сессию:
...
$_SESSION['subid'] = $client->getSubid();
На странице, с которой отправляется постбек, берите subid из сессии:
$url = 'http://tracker.com/POSTBACK_KEY/postback?payout=100&status=sale&subid=' . urlencode($_SESSION['subid']);
file_get_contents($url);
# FAQ по KClient PHP
# Как подключить к Wordpress?
Смотрите страницу WordPress плагин.
# Как передать title в качестве ключевика?
Для этого вы должны знать как получить title
в php скриптах. Передавать ключевик можно через метод $client->keyword('...')
:
$client->keyword($myTitle);
$myTitle
- это лишь пример того, как содержимое переменной передается в качестве ключевика.
# Как показывать HTML код из потока в определенном месте лендинга?
- Удалите (закомментируйте) строки:
$client->execute();
и
$client->executeAndBreak();
- Добавьте:
$GLOBALS['client'] = $client;
- В нужном месте сайта вставьте:
<?php echo $GLOBALS['client']->getContent() ?>
# Как решать проблемы с KClient PHP?
В первую очередь проверьте, доходят ли клики до трекера. Для этого смотрите лог трафика и отчет Клики кампании.
Если кликов нет. Добавьте $client->showLog();
после строк
$client->execute()
и $client->executeAndBreak()
.:
Это выведет отладочную информацию прямо на страницу.
Если лога нет, добавьте еще перед кодом интеграции (после <?php
):
ini_set('display_errors', 'on');
error_reporting(7);
Если на странице ничего не появилось, значит у вас KClient PHP не подключен.
Если вы видите только Requested: https://tracker.com/api.php
- это значит домен с трекером недоступен для этого сайта (причины: кэш днс, блокировка РКН или просто нерабочий домен).
# Как оставлять пользователя на сайте при срабатывании определенного потока?
Используйте в потоке действие «Ничего не делать».
# Как проверить, считает ли Keitaro пользователя ботом?
/*
код инициализации клиента
*/
if ($client->isBot()) {
echo 'bot';
} else {
echo 'not bot';
}
# Как указать путь до kclient.php при наличии папок?
Посмотрите директорию вашего сайта и указывайте абсолютный путь:
require '/путь_до_сайта/kclient.php';
...
# Почему на сайте виден php-код и сам он не выполняется?
Убедитесь, что имя файла, где установлен код с расширением .php
Сам код должен быть обернут в теги:
<?php
....код....
?>
# Почему в браузере ошибка TOO_MANY_REDIRECTS
Это значит, что один ваш поток отправляет на сайт, где снова срабатывает проверка и повторный редирект в эту же кампанию. Отредактируйте поток с редиректом на сайт. Смените схему на Действие и выберите «Ничего не делать» для проверки.
# Почему в логе трафика http-редирект, но по факту не происходит?
Причина в том, что файл index.php сохранен в utf-8 с заголовком BOM.
Как выявить: смотрите нет ли пробела или какого-то символа перед кодом.
Как исправить: Удалить этот символ. Если не получится, пересохранить в «UTF-8 without BOM».
Важно! Не все редакторы видят этот символ.
# Как передать subid клика используя KClient PHP?
Subid можно получить через метод $client->getSubId()
.
<?php
$url = 'https://domain_tracker/85474/postback?payout=0&status=lead&subid=' . urlencode($client->getSubId());
?>
# Как получить subid на второстепенных страницах?
Содержимое subid сохравняется в сессию:
$_SESSION['sub_id'];
Вы можете использовать для постановки в своих скриптах:
session_start(); // если сессия не использовалась ранее, то лучше запустить ее.
...
$data = array(
'sub1' => $_SESSION['sub_id'],
'name' => $_POST['name'],
...
);
# Как использовать KClient PHP на внутренних страницах и не заводить новый клик?
Подключите KClient PHP на внутренней странице, добавив $client->restoreFromSession();
:
<?php
require_once dirname(__FILE__) . '/kclient.php';
$client = new KClickClient('http://domain_tracker/api.php?', 'token');
$client->restoreFromSession();
Теперь можете вызывать те же методы, но без создания нового клика, например, вызов оффера:
<a href="<?php echo $client->getOffer()">offer link</a>
# Расшифровка ошибок при запросе
[REQ_ERR: 400]
- запрос не удалось обработать из-за синтаксической ошибки[REQ_ERR: 402]
- тип лицензии не профессиональная или кончилась лицензия[REQ_ERR: 401]
- запрос требует аунтефикации пользователя[REQ_ERR: 403]
- доступ к указанному ресурсу ограничен[REQ_ERR: 404]
- сервер не нашел по указанному URI никаких ресурсов[REQ_ERR: 405]
- указанный метод нельзя применить к текущему ресурсу[REQ_ERR: 407]
- необходима авторизация на прокси-сервере[REQ_ERR: 408]
- превышено время ожидания запроса[REQ_ERR: 410]
- требуемый ресурс больше не доступен на сервере и адрес его расположения не известен[REQ_ERR: 429]
- слишком много запросов[REQ_ERR: 500]
- внутренняя ошибка сервера[REQ_ERR: 501]
- сервер не поддерживает функциональных возможностей, необходимых для выполнения запроса[REQ_ERR: 502]
- сервер, выступая в роли шлюза или прокси-сервера, получил некорректный ответ от вышестоящего сервера.[REQ_ERR: 503]
- сервер не может обработать запрос из-за временной перегрузки или технических работ.[REQ_ERR: 504]
- сервер, в роли шлюза или прокси-сервера, не дождался в рамках установленного таймаута ответа от вышестоящего сервера текущего запроса.[REQ_ERR: 505]
- сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP.[REQ_ERR: UNSUPPORTED_PROTOCOL]
- переданный URL содержит неподдерживаемый библиотекой cURL протокол[REQ_ERR: FAILED_INIT]
- проблема при инициализации запроса[REQ_ERR: BAD_URL]
- неправильно сформирован URL[REQ_ERR: COULDNT_RESOLVE_PROXY]
- проблема при определении прокси.[REQ_ERR: COULDNT_RESOLVE_HOST]
- проблема при определении сервера у домена. Проверьте DNS.[REQ_ERR: COULDNT_CONNECT]
- сбой при соединении с сервером[REQ_ERR: PARTIAL_FILE]
- передана только часть данных. Проверьте, системный лог трекера.[REQ_ERR: READ_ERROR]
- ошибка чтения данных[REQ_ERR: OUT_OF_MEMORY]
- недостаточно памяти[REQ_ERR: OPERATION_TIMEDOUT]
- превышен лимит ожидания ответа трекера. Проверьте, что сервер, где стоит KClient PHP может подключиться к трекеру.[REQ_ERR: HTTP_POST_ERROR]
- ошибка при HTTP запросе[REQ_ERR: BAD_FUNCTION_ARGUMENT]
- функция была вызвана с неправильными параметрами[REQ_ERR: TOO_MANY_REDIRECTS]
- слишком много переадресаций, достигнут счетчик разрешенных переадресаций[REQ_ERR: GOT_NOTHING]
- сервер отправил пустые данные[REQ_ERR: SEND_ERROR]
- сбой при отправке данных[REQ_ERR: RECV_ERROR]
- сбой при получении данных[REQ_ERR: BAD_CONTENT_ENCODING]
- нераспознанная кодировка данных[REQ_ERR: SSL]
- проблемы с SSL. Проверьте настройки Cloudflare (секция SSL).[REQ_ERR: UNKNOWN]
- неизвестная ошибка. Проверьте логи трекера.