我正在使用 SwiftMailer 向在我的网站上注册的人发送电子邮件。我想跟踪打开和点击,我的打开工作完美。点击率几乎就在那里...
当您打开电子邮件时,我使用设置为 1px x 1px 的图像来加载 PHP 脚本。这会跟踪此人的电子邮件地址并记录他们在我的 MySql 数据库中打开它的次数。电子邮件中的所有链接首先将用户带到我网站上的一个脚本,该脚本使用 GET 请求来读取他们的电子邮件地址和包含该链接的电子邮件。然后该脚本将此信息记录在我的数据库中。
问题是当您单击电子邮件中的链接时,它会很好地记录第一次单击。它会记录用户点击的每一个不同的链接,但它只会记录来自同一来源的每次点击一次。
IE:每封电子邮件的页脚都有一个链接,用于在 Facebook 上为公司点赞,另一个链接用于在 Twitter 上点赞。当您单击 FB 时,数据库会更新为您单击了 1 个链接。如果你再次点击FB,它不会更新。但是如果你点击 Twitter,它会说你点击了 2 个链接。
如果我直接在浏览器中加载脚本,它将正确跟踪每次点击。
编辑:
网址结构: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);
}
建议?