Reply to Re: [PHP] dynamic image will not print properly

Your name:

Reply:


Posted by Richard Lynch on 04/06/05 03:57

On Tue, April 5, 2005 2:26 pm, DuSTiN KRySaK said:
> Hi there - I had my first crack at creating a dynamic image. The thing
> is - the image is displayed fine in the browser, but when you go to
> print it, the image is either missing, or part of it is missing. Is
> there something special needed to print a dynamic image?

What you did, *should* work just fine.

But we're talking *MICROSOFT* here!

These people do *NOT* follow standards. Period.

> Here is a code snippet used to create the image....
>
> header("Content-type: image/jpg");
> $image = imagecreatefromjpeg("template_cpn.jpg");
> $red = imagecolorallocate( $image, 255,0,0 );
> imagestring($image, 2, 306, 200, $couponcode, $red);
> imagestring($image, 2, 306, 235, $exp, $red);
> imagestring($image, 2, 175, 338, $myname, $red);
> imagestring($image, 2, 175, 360, $myemail, $red);
> imagejpeg($image);
> imagedestroy($image);
>
> Now the way I have it set up, is that there is a PHP file that
> generates the image (the above code). Then I have a parent PHP page
> that calls that page like so:
>
> $theurl = "cstl.php?dk=soemthinghere
> echo "<img src=\"$theurl\">";
>
> See any issues in my code or setup?
>
> Any ideas?

Here's what you do: You make it *IMPOSSIBLE* for Microsoft to screw up.

This means you make your URL look JUST LIKE any other JPEG URL.

$theurl = "cstl/dk=somethinghere/whatever.jpg";

Step 1:
Add/Create an .htaccess file with this:
<Files cstl>
ForceType application/x-httpd-php
</Files>
This forces Apache to treat the file named 'cstl' as a PHP script.

Step 2:
Rename cstl.php to just 'cstl' (see Step 1)

Step 3:
Instead of using $_GET['dk'] do this:
$pathinfo = $_SERVER['PATH_INFO'];
$pathinfo = explode('/', $pathinfo);
//Key-Value pairs:
$_PATH = array();
//Path information buried in URL for source image sub-directories:
$PATH = array();
while (list(, $keyval) = each($pathinfo)){
$parts = explode('=', $keyval);
switch(count($parts)){
case 0: break; //do nothing with bogus extra '/' in URL
case 1: $PATH[] = $keyval;
default:
$key = $parts[0];
unset($parts[0]);
$_PATH[$key] = implode('=', $parts);
break;
}
}

Now you can use $_PATH['dk'] instead of $_GET['dk'] to get your dk value
from the URL. You'll only change $_GET to $_PATH in cstl (formerly
cstl.php) and you're all set.

Now, there is *NO* *WAY* Microsoft can manage to screw up your URL and
decide that it must not be a JPEG because it has GET data, or ends in .php
or whatever.

This same technique must be applied to PDF, FDF, SWF/Ming files if you
want to avoid a zillion MS IE bugs related to multi-media.

So you might as well put the code for $_PATH/$PATH in an include file. I
guarantee you'll need it again and again as you use more and more
multi-media in your web-site.

--
Like Music?
http://l-i-e.com/artists.htm

[Back to original 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

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