0

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

建议?

4

0 回答 0