You are here: PHP-gen'd images won't display in HTML « PHP Language « IT news, forums, messages
PHP-gen'd images won't display in HTML

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 -->");
}

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация