在PHP中跟踪电子邮件点击

时间:2014-10-03 13:48:53

标签: php email swiftmailer click-tracking

我正在使用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);
}

建议?

0 个答案:

没有答案