Отслеживание кликов по электронной почте в переполнении стека

Я использую SwiftMailer для отправки писем людям, которые зарегистрированы на моем сайте. Я хочу, чтобы отслеживать открывает & клики, и у меня открывания работают отлично. Сквозные клики почти там …

Когда вы открываете электронную почту, я использую изображение, установленное на 1px на 1px, которое загружает скрипт PHP. Это отслеживает адрес электронной почты человека и записывает, сколько раз он открывал его в моей базе данных MySql. Все ссылки в электронном письме сначала приводят пользователя к сценарию на моем сайте, который использует GET-запросы для чтения своего адреса электронной почты и адреса электронной почты, в котором содержалась ссылка. Этот сценарий затем записывает эту информацию в мою БД.

Проблема в том, что когда вы нажимаете на ссылку в письме, он записывает первый клик просто отлично. И это будет записывать каждый разные пользователь нажимает на ссылку, но он будет записывать каждый клик из одного и того же источника только один раз.

IE: в нижнем колонтитуле каждого электронного письма есть ссылка на понравившуюся компанию в Facebook, и еще одна — в Twitter. Когда вы нажимаете FB, БД обновляется, чтобы сообщить, что вы нажали 1 ссылку. Если вы нажмете на FB снова, он не будет обновляться. Но если вы нажмете на Twitter, он скажет, что вы нажали на 2 ссылки.

Если я загружу скрипт прямо в браузер, он будет правильно отслеживать каждый клик.

РЕДАКТИРОВАТЬ:

Структура URL: https://<my website>.com/emails.php?type=click&email=<id of email>&address=<user email>&url=<link to click on>

PHP:

if($_GET['type'] == 'click') {
$email = $_GET['email'];
$address = $_GET['address'];
$url = $_GET['url'];

// Get Worker Email
$sql = mysqli_query($con, "SELECT * FROM worker_emails WHERE id='$email'");
$row = mysqli_fetch_array($sql);

// Unserialize Array
$array = unserialize($row['clicks']);

// Update Array
$array[''.$address.'']['Clicks'] = $array[''.$address.'']['Clicks'] + 1;

// Serialize Array
$array = serialize($array);

// Update Click Tracking
mysqli_query($con, "UPDATE worker_emails SET clicks='$array' WHERE id='$email'");

// Send User to Link
header("Location: ".$url);
}

Предложения?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …