Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测何时从站点访问图像(或任何类型的文件),并通过电子邮件通知_Php_Html_Image_Email_Tracking - Fatal编程技术网

Php 检测何时从站点访问图像(或任何类型的文件),并通过电子邮件通知

Php 检测何时从站点访问图像(或任何类型的文件),并通过电子邮件通知,php,html,image,email,tracking,Php,Html,Image,Email,Tracking,我计划在电子邮件时事通讯中添加一个徽标图像,并将其用作跟踪图像。此图像将托管在我的网站上(例如my_logo.gif),并在电子邮件的html中引用(即)。我想用php创建一个脚本,在访问/查看图像时给我发电子邮件。这可能吗?如果是,怎么做 欢迎提出完成此任务的所有想法和建议 //Display image $image=imagecreatefromjpeg('my_logo.jpg'); header('Content-Type: image/jpeg'); imagejpeg($image

我计划在电子邮件时事通讯中添加一个徽标图像,并将其用作跟踪图像。此图像将托管在我的网站上(例如
my_logo.gif
),并在电子邮件的html中引用(即
)。我想用php创建一个脚本,在访问/查看图像时给我发电子邮件。这可能吗?如果是,怎么做

欢迎提出完成此任务的所有想法和建议

//Display image
$image=imagecreatefromjpeg('my_logo.jpg');
header('Content-Type: image/jpeg');
imagejpeg($image);

//logging or notifying stuff here
// ...

只需像

那样链接到这个脚本,链接到php文件并让它转发或显示图像本身,并在访问php文件时计数/跟踪/发送电子邮件给您可能会更容易

您可以通过.htaccess将请求重定向到.jpg文件,并对其进行计数等。

您可以通过使用
readfile()
函数并发送适当的内容类型标题来实现这一点。您可以在图像发送到浏览器之前或之后执行其他程序代码


如果以下程序代码的执行时间较长,则需要查看函数。

将类似内容放入映像目录中的
.htaccess
文件中:

RewriteEngine On
RewriteRule ^(.+\.jpg)$ image.php?image=$1 [nocase]
// send email here

header('Content-Type: image/jpeg');
readfile($_GET['image']);
将类似的内容放入同一目录下的文件
image.php

RewriteEngine On
RewriteRule ^(.+\.jpg)$ image.php?image=$1 [nocase]
// send email here

header('Content-Type: image/jpeg');
readfile($_GET['image']);

这只是一个简单的示例,请确保验证
$\u GET['image']
变量,以确保它是同一目录中的图像,否则可能有人会滥用此脚本来读取其他目录中的文件(
image.php?image=../../../passwords
).

如果您要读取jpeg并输出相同的jpeg,您可以跳过gd函数,直接按原样转储文件。这是一个很好的解决方案。我现在有一个问题,在实施后。。。我的验证可以严格地通过在.htaccess文件中添加这一行来实现:RewriteCond%{REQUEST_FILENAME}-f,还是仍然需要在image.php文件中进行验证。如果答案是后者,您建议我怎么做?@Serv始终确认所有路径!任何人都可以直接调用
image.php
文件,完全避免重写。我相信您可以找到在SO上验证路径的解决方案,但使用并检查路径的开头是否与映像目录匹配(
substr(
)基本上可以做到这一点。