Intereting Posts
Загрузка данных из базы данных с помощью php и чистого ajax в текстовое поле Laravel, sync () – как синхронизировать массив, а также передавать дополнительные поля поворота? Внешний url получить изображение Как получить одну строку из Oracle в PHP? Как точно знать, будет ли FastCGI использоваться для запуска скриптов php file_get_contents завершается с ошибкой «getaddrinfo failed: нет адреса, связанного с именем хоста» PHP: YouTube v3 API Captions Upload with Sync Flag Как читать, если флажок установлен в PHP? Как использовать PEAR за прокси-сервером? Загрузка WordPress Post In Div с использованием другого шаблона Прокрутите каждый ключ и значение многомерного массива php Попытка получить свойство не объекта – Laravel 5 cURL – загрузить сайт с защитой CloudFlare Драйвер php MongoDB заставляет apache на XAMPP OS X терпеть неудачу Предупреждение: array_merge (): Аргумент # 1 не является массивом при обработке двух $ _POST

Разработка пикселя отслеживания

Я пытаюсь создать пиксель, который будет отслеживать текущий URL-адрес пользователя, когда он посещает. Я могу использовать либо JS (предпочтительный), либо пиксель изображения 1×1. С JS я предполагаю, что мне нужно будет запустить запрос AJAX для скрипта PHP для сбора необходимой мне информации и с пикселем изображения. У меня возникают проблемы с получением URL-адреса в настоящее время.

Я также думал о URL-кодировании текущего URL-адреса с JS и динамическом размещении пикселя изображения с закодированным текущим URL-адресом в виде строки запроса в PHP-скрипте, но я могу получить очень много времени.

Если я должен идти по маршруту AJAX, какую библиотеку AJAX я могу использовать? Для этой цели JQuery слишком раздута.

Любые другие идеи?

Вы можете написать скрипт, который создает и возвращает изображение .gif , .jpeg или .png с использованием PHP для отслеживания с использованием библиотеки GD (которая часто распространяется с PHP в современных версиях). Если у вас нет доступа к GD, вы всегда можете перекомпилировать PHP с включенным GD.

Пример:

pixel.php (прокомментировано в целях пояснения):

 <?php // Create an image, 1x1 pixel in size $im=imagecreate(1,1); // Set the background colour $white=imagecolorallocate($im,255,255,255); // Allocate the background colour imagesetpixel($im,1,1,$white); // Set the image type header("content-type:image/jpg"); // Create a JPEG file from the image imagejpeg($im); // Free memory associated with the image imagedestroy($im); ?> 

В простом примере вы можете вызвать это отслеживание, используя следующий пример URL-адреса на электронной почте или на другой странице:

 <img src="http://example.com/pixel.php?s=value1&b=value2&c=value3"> 

Использование переменных:

Внутри pixel.php вы можете анализировать и интерпретировать любые переменные $_GET , которые передаются ему внутри тега изображения, упрощенно:

 if (isset($_GET['a'])) { // (Do|log) act on a } if (isset($_GET['b'])) { // (Do|log) act on b } if (isset($_GET['c'])) { // (Do|log) act on c } 

Примените и повторите, как вам нужно, но вы можете быть достаточно сложными в своих действиях и тем более, что у вас есть доступ к довольно большой информации о пользователе, если вы можете установить vars в строку $_GET .

Более подходящим примером может быть:

 <img src="http://example.com/pixel.php?userid=98798&campaign=302&last=8"> 

Отслеживание больше, чем просто переменные $ _GET:

Вы также можете получить гораздо больше информации с помощью PHP, например:

 // Server variables $ip = $_SERVER['REMOTE_ADDR']; $referer = $_SERVER['HTTP_REFERER']; $useragent = $_SERVER['HTTP_USER_AGENT']; $browser = get_browser(null, true); etc... 

а затем, возможно, вставьте в таблицу отслеживания в своей базе данных:

 $sql = "INSERT INTO campaign_tracking ('when','campaign','last','ip','useragent') VALUES (NOW(),'$campaign','$last','$ip','$useragent')"; 

Это базовый метод, используемый широко для отслеживания маркетинговых кампаний по электронной почте и, в частности, в PHP, но тот же метод применим с использованием других языков и библиотек сценариев / программирования, а также для других целей.

Дальнейшая и полезная информация о GD:

  • Ссылка GD – на php.net

Вот еще одна реализация PHP пикселя отслеживания из проекта Open Web Analytics , который пытается в основном быть клоном PHP в Google Analytics.

Он возвращает прозрачное GIF-изображение 1×1 (без использования библиотеки изображений PHP!), С заголовком no-cache (важно для точного отслеживания) и сбрасывает вывод, чтобы вы могли продолжить обработку аналитики, не блокируя ответ HTTP (производительность). Это похоже на довольно продвинутую реализацию, стоит попробовать.

 <?php ignore_user_abort(true); // turn off gzip compression if ( function_exists( 'apache_setenv' ) ) { apache_setenv( 'no-gzip', 1 ); } ini_set('zlib.output_compression', 0); // turn on output buffering if necessary if (ob_get_level() == 0) { ob_start(); } // removing any content encoding like gzip etc. header('Content-encoding: none', true); //check to ses if request is a POST if ($_SERVER['REQUEST_METHOD'] === 'POST') { // the GIF should not be POSTed to, so do nothing... echo ' '; } else { // return 1x1 pixel transparent gif header("Content-type: image/gif"); // needed to avoid cache time on browser side header("Content-Length: 42"); header("Cache-Control: private, no-cache, no-cache=Set-Cookie, proxy-revalidate"); header("Expires: Wed, 11 Jan 2000 12:59:00 GMT"); header("Last-Modified: Wed, 11 Jan 2006 12:59:00 GMT"); header("Pragma: no-cache"); echo sprintf('%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%',71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33,249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59); } // flush all output buffers. No reason to make the user wait for OWA. ob_flush(); flush(); ob_end_flush(); // DO ANALYTICS TRACKING HERE 

Выход 1px x 1px следующим образом:

 header('Content-type: image/png'); echo gzinflate(base64_decode('6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA'));