0

今天是个好日子!

事情就是这样;一个 .htaccess 文件,mod rewrite,将 imagename.png(非现有文件)重定向到 tracker.php(真实文件)。因此,当用户查看 site.com/hello.png 时,用户实际上是在查看 /hello.php,它收集并存储信息。

跟踪器.php

<?php
$date = date('d-m-Y');
$time = date('H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$ref = @$_SERVER["HTTP_REFERER"];

header('Content-type: image/png');
echo gzinflate(base64_decode('6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA'));

$myFile = "tr.txt";
$fh = fopen($myFile, 'a');
fwrite($fh, $myFile = $time ." | ". $date . " | " .$ip. " | " .$ref. " | \r\n\r\n");
fclose($fh);
?>

我在我的网站上使用它来跟踪访问者。一切正常,我可以收集有关 ip、webbrowser、ref-link 等的信息。

但我的问题是,这样做有什么限制?我已经试验了很长时间,似乎我只能使用普通的 php(而不是echo "some other language")。我无法重定向或回显文本。循环、if/else、变量等正在工作。如果我尝试重定向,我可以看到该页面正在尝试连接到例如谷歌,但只是一秒钟,所以没有实际的重定向。

tl;dr 使用 php 文件作为图像时,代码有哪些限制?

4

1 回答 1

0

我不认为有任何限制。您的 php 代码已执行并运行。

您显示的内容不会限制 php.ini。

你在那里提到了一个重定向。您正在 html 页面中加载图像(是否由 php 生成,无关紧要)。html 页面从服务器接收到它的标头,并且您的 php 生成的图像也收到了它的标头(内容类型图像)。这是重定向的位置。您的 html 页面没有理由使用图像上的 php headers 函数进行重定向。

如果您直接在浏览器中加载php生成的图像,我认为您将能够重定向用户(直接,不显示图像),但作为html页面中的图像,不可能影响其余部分页面,除非您使用 javascript。

于 2013-04-11T19:56:19.450 回答