我正在使用SwiftMailer向在我网站上注册的人发送电子邮件。我想跟踪打开&点击通过,我的打开工作完美。点击几乎就在那里......
当你打开电子邮件时,我使用1px加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);
}
建议?