从PHP源显示图像导致解析错误

时间:2016-01-14 17:33:33

标签: php html image

我正在使用一个简单的脚本,该脚本通过HTML IMG标记中的PHP脚本输出图像。用于获取图像文件的代码如下。

<img <?php print "$width"; ?>src="http://www.cdja.ca/validate/img.php?memnum=<?php print "$memnum"; ?>&type=<?php print "$type"; ?>" alt="">

这是完美的,可以与现有图像一起使用。然而,该组织最近更新了他们的徽标,并希望更新图像以反映。

当我引用新图像时,我收到PHP警告,图像不输出。我得到的警告是

  

警告:输入中出现意外字符:&#39; \&#39; (ASCII = 92)state = 1 in   /hsphere/local/home/cdjai/cdja.ca/validate/logo_links/Vice-A.gif on   第1行解析错误:语法错误,意外的T_STRING   /hsphere/local/home/cdjai/cdja.ca/validate/logo_links/Vice-A.gif on   第1行

Google告诉我这是一个名称空间问题,但我不相信我在代码中使用名称空间。

作为测试,我决定查看原始徽标和新徽标的脚本输出内容。

原始徽标会让我获得GIF输出 - http://cdja.ca/validate_new/img.php?memnum=150&type=2

但是新徽标只是让我得到了上述警告 - http://cdja.ca/validate_new/img.php?memnum=548&type=2

如果我将输出文件类型从GIF更改为PNG - 这是我的偏好 - 警告消失了,我只是得到一个解析错误。

  

解析错误:语法错误,意外的T_STRING   /hsphere/local/home/cdjai/cdja.ca/validate_new/logo_links/Vice-A.png   第4行

我真的很担心为什么我在使用新文件而不是旧文件输出时出现解析错误。

img.php代码位于

之下
ini_set('display_errors',1); 
error_reporting(E_ALL);
include ("../phpcommon/phpHelper.php");
include ("../quoteadmin/db_writer.php");

$memnum = getParameterString("memnum");
$type = getParameterString("type");

$img = "logo_links/";
$ext = "gif";

/* ----------  Image Versions ----------  */

if ($type == 1){
    if ($memnum == "001" or $memnum == "002" or $memnum == "006" or $memnum == "015" or $memnum == "121" or $memnum == "153" or $memnum == "323" or $memnum == "150"){
        $filename1 = "Life-White";
    } 
else{
        $filename1 = "Certified1";
    }
}

include $img . $filename1 . "." . $ext;

2 个答案:

答案 0 :(得分:2)

而不是包含图像,使用readfile发送它..

header("Content-Type: image/gif");
readfile($img . $filename1 . "." . $ext);
exit;

:)

答案 1 :(得分:0)

请勿使用include来显示图像。如果它是一个上传的文件,那么就会以这种方式暴露安全风险。

尝试以下方法:

header('Content-Type: image/gif');
echo file_get_contents($file);