|
Posted by CPD on 12/28/06 19:42
I have an image-generating script myimage.php that's worked and that I've
used for years. All it does is increment a counter file and output a single
pixel in the color I provide. But on one particular web server I uploaded
to, the behavior is strange.
If I enter the URL http://www.domain.ext/myimage.php, the picture is
displayed as expected. But if I insert the script into HTML, like <img
src="myimage.php">, it fails to display and I get the broken image icon,
instead.
This has never happened before, but I do not know enough about PHP builds
and web server settings to figure this out.
Any suggestions? Thanks for any help!
Here's the code, if necessary:
$filename = trim($_GET['filename']);
$color = (trim($_GET['color']) == "") ? "000000" : trim($_GET['color']);
$count = '0';
$file_last_mod = 0;
// Set up filename whether or not provided
if(strlen($filename)) {
$filename .= ".count";
}
else {
$fname_end = strrpos($script_name, ".");
$fname_end = ($fname_end === false) ? strlen($script_name) :
$fname_end - 1;
$slash_pos = strrpos($script_name, "/");
$fname_start = ($slash_pos === false) ? 0 : $slash_pos + 1;
$script_name = (!strlen($filename)) ? $HTTP_SERVER_VARS['SCRIPT_NAME'] :
$filename;
$filename = substr($script_name, $fname_start, $fname_end - $slash_pos)
.. ".count";
}
// open and read file if it exists
if (file_exists($filename)) {
$file_last_mod = filemtime($filename);
$count = file_get_contents($filename);
}
// increment count
$count += 1;
// reopen file and write new count
$handle = fopen($filename, "w");
fwrite($handle, $count);
fclose($handle);
// Generate a 1 x 1 pixel image
$im = @imagecreate(1, 1)
or die("<!-- Cannot Initialize new GD image stream -->");
// Set up color if not provided
if (!strlen(trim($color))) $color = "000000";
// Set image color
$red = 0 + base_convert(substr($color, 0, 2), 16, 8);
$green = 0 + base_convert(substr($color, 2, 2), 16, 8);
$blue = 0 + base_convert(substr($color, 4, 2), 16, 8);
$img_color = imagecolorallocate($im, $red, $green, $blue);
// Output the created image according to available GD image support
if (function_exists("imagegif")) {
header("Content-type: image/gif");
imagegif($im);
} elseif (function_exists("imagejpeg")) {
header("Content-type: image/jpeg");
imagejpeg($im);
} elseif (function_exists("imagepng")) {
header("Content-type: image/png");
imagepng($im);
} elseif (function_exists("imagewbmp")) {
header("Content-type: image/vnd.wap.wbmp");
imagewbmp($im);
} else {
die("<!-- No image support on this PHP server -->");
}
[Back to original message]
|