Php 用于跟踪像素的URL不';不要加载文件

Php 用于跟踪像素的URL不';不要加载文件,php,html,Php,Html,我以前是根据图像处理跟踪像素的。不幸的是,我在加载图像标记中的源文件时遇到问题。pixel tracker(pixel.php)的工作原理与我尝试的一样,它自己寻址文件URL,并将数据插入数据库 应用于电子邮件时,文件将不会加载。我在两个电子邮件提供商Gmail和Yahoo上试过。没有回应 然后,因为我认为它可能被阻止或其他任何事情-谁知道-我把它放在我自己的网站上。没有结果。因此,我假设文件没有加载到图像标记中。但我该怎么解决呢 我使用的图像标记非常简单: <img src='http:

我以前是根据图像处理跟踪像素的。不幸的是,我在加载图像标记中的源文件时遇到问题。pixel tracker(pixel.php)的工作原理与我尝试的一样,它自己寻址文件URL,并将数据插入数据库

应用于电子邮件时,文件将不会加载。我在两个电子邮件提供商Gmail和Yahoo上试过。没有回应

然后,因为我认为它可能被阻止或其他任何事情-谁知道-我把它放在我自己的网站上。没有结果。因此,我假设文件没有加载到图像标记中。但我该怎么解决呢

我使用的图像标记非常简单:

<img src='http://www.mypage.com/data/pixel.php?a=value1&b=value2&c=value3' />

提前感谢您的帮助

更新: 这是pixel.php文件的代码。我认为这有点奇怪,但如果我直接寻址文件,它就可以工作到目前为止

<?php
require 'config.php';
  // Create an image, 1x1 pixel in size
  $im=imagecreate(1,1);

  // Set the background colour
  $white=imagecolorallocate($im,255,255,255);

  // Allocate the background colour
  imagesetpixel($im,1,1,$white);

  // Set the image type
  header("content-type:image/jpg");

  // Create a JPEG file from the image
  imagejpeg($im);

  // Free memory associated with the image
  imagedestroy($im);
 $ip = $_SERVER['REMOTE_ADDR'];
  $useragent = $_SERVER['HTTP_USER_AGENT'];

    $sql1 = "INSERT INTO pixel (a, b, c)  
            VALUES ('$ip','$useragent','$c')";

    if ( $mysqli->query($sql1) ){

        //header("location: overview.php"); 
        echo "Registration successful!";
    }

    else {
        $_SESSION['message'] = 'Registration failed!';
        //header("location: error.php");
        echo "Registration failed";
    }    
?>
针对您的案例:

  • 准备用于PHP转换为文本的1像素图像
  • 将图像二进制数据缓存到PHP代码中

    <?php $content = file_get_contents('white_1x1.jpg'); echo base64_encode($content); ?>
  • 将二进制数据和日志数据回显到数据库中

    <?php $content = 'a long string value from step 2'; header("Content-Type: image/jpeg"); echo base64_decode($content); //following PHPcode for Log to db ?>
  • 最后,代码:

    <?php
        $content = '/9j/4AAQSkZJRgABAQEAwADAAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKAP/2Q==';
        header("Content-Type: image/jpeg");
        echo base64_decode($content);
        //following PHPcode for Log to db
        require 'config.php';
        $ip = $_SERVER['REMOTE_ADDR'];
        $useragent = $_SERVER['HTTP_USER_AGENT'];
        $sql1 = "INSERT INTO pixel (a, b, c) VALUES ('$ip','$useragent','$c')";
        if ( $mysqli->query($sql1) ){
            //header("location: overview.php"); 
            echo "Registration successful!";
        }
        else {
            $_SESSION['message'] = 'Registration failed!';
            //header("location: error.php");
            echo "Registration failed";
        }
    ?>
    

    think,只调用php文件,不加载任何图像。要在php文件代码的最后加载此图像,您需要发布php代码和浏览器响应标题,以便有机会调试此文件。@lvaroTouzón,imagejpeg()输出image@nucky,此外,是否记录了任何错误?出于服务器性能考虑,你可以回显图像,而不是动态生成。为了更好地理解,请让我问一些问题。在第1步:准备意味着在回复中给文件起一个类似“white_1x1.jpg”的名称,并使用:imagejpeg($im,'white_1x1.jpg');,对的第2步和第3步在$imagejpeg和$ip之间插入(依此类推),直到数据库插入命令?很抱歉问了这么多,但是试着理解逻辑和怎么做。还有一件事:我在尝试时发现了一些东西。如果我直接在服务器上寻址该文件(在没有php的情况下编写src=“dir/pixel.php”a.s.o.),它就可以工作(!)。但是,当使用http://通过整个URL进行寻址时,它不起作用。Aim,不要动态生成图像以缩小服务器资源的规模。对于步骤1,只需使用您喜欢的任何软件创建一个JPEG图像,并将其保存到
    white_1x1.jpg
    。运行PHP,获得下一步的结果。对于步骤3,注释掉步骤2的代码。使用步骤2结果而不是动态生成图像。在echo base64_解码($content)之后附加db日志代码
    .BTW,在这一行之后
    echo base64\u decode($content),存在不应回显()/print()/header()
    
    <?php
        $content = '/9j/4AAQSkZJRgABAQEAwADAAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKAP/2Q==';
        header("Content-Type: image/jpeg");
        echo base64_decode($content);
        //following PHPcode for Log to db
        require 'config.php';
        $ip = $_SERVER['REMOTE_ADDR'];
        $useragent = $_SERVER['HTTP_USER_AGENT'];
        $sql1 = "INSERT INTO pixel (a, b, c) VALUES ('$ip','$useragent','$c')";
        if ( $mysqli->query($sql1) ){
            //header("location: overview.php"); 
            echo "Registration successful!";
        }
        else {
            $_SESSION['message'] = 'Registration failed!';
            //header("location: error.php");
            echo "Registration failed";
        }
    ?>