0

我正在创建一个时事通讯系统,它会在打开电子邮件时跟踪所有类型的信息。

我从一个看起来像的图像开始

<p><img src="http://xxx.com/newsletterInfo.php?newsletter=12&userid=234" width="314" height="20" alt="Cancel Newsletter Subscription"></p>

然后在 newsletterInfo.php 文件中,我将 url 回显到图像中。

我认为这不是这样做的方式吗?

有人可以指出我的问题在哪里。

谢谢

更新

电子邮件的发送:

            $name = stripslashes($fetchquery["name"]);
            $email = stripslashes($fetchquery["email"]);

            $content = $_POST["maincontent"];
            $subject = $_POST["subject"];
            $message = "<html><head><title>".$subject."</title></head><body>";
            $message .= str_replace('{name}', $name, $content);
            $message .= '<p><img src="http://xxx.com/newsletterInfo.php?newsletter='.$id.'" width="314" height="20" alt="Cancel Newsletter Subscription"></p>';
            $message .= "</body></html>";

            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From: Username <email@here.com>' . "\r\n";

            // Mail it
            mail($email, $subject, $message, $headers);

在信息页面上,我这样做了:

if(isset($_GET["newsletter"])) {

    $query = $pdo->prepare("UPDATE newsletter SET opened=`opened` +1 WHERE id=:id");
    $query->execute(array(':id' => $_GET["newsletter"]));
    $query_num = $query->rowCount();

    if($query_num > 0){
        echo 'http://xxx.com/cancel.png';
    }

正如您所看到的,电子邮件使用 mail() 函数发送时事通讯,然后图像在哪里我已经放置了一个 php 文件的 url,在这个文件中询问变量,如果它设置了它然后回显图像 url 然后将数据输入数据库,所有这些都 100% 有效,因为数据库正在更新。

存在的问题是图像已损坏。

如果您右键单击并转到 newsletterInfo.php,则会显示 url。

我认为这根本不是这样做的方式。

4

1 回答 1

1

src属性应该指向一个图像。您src指向包含 URL 的(动态)文本文件,而不是实际图像。newsletterInfo.php应该输出一个图像,而不是它的 URL。

可能的解决方案:

  1. 最简单的方法:在 内进行重定向newsletterInfo.php,如下所示:

    header('Location: url_to_the_image.jpg');
    

    (将文件名替换为您当前正在回显的内容并删除该回显)

  2. 困难的方法:将图像作为文件打开,发送正确的标题,然后回显图像。(不是一个好主意)

于 2013-01-13T19:34:50.960 回答