The junk below is the php I used to create my signature. I actually think yours is better however, mine (due to the nature of being tossed together quickly) is sort of pathetic workmanship. After looking at your code it almost seems as if we were working together the entire time , except mine is written upside down. One thing I see lacking in these scripts however is the detection for some other types of browsers that aren't in the "standard few", such as the Galeon browser. If you have ever seen the resulting output when these signatures are pulled up in Galeon you'll know exactly what I mean .

Code:
 <?php
header("Content-type: image/png");	

function osdet() 
{
$array2=explode(";", $_SERVER['HTTP_USER_AGENT']);

        if ($array2[2]==" Windows NT 5.1") {
	  $OS=" Windows XP"; }
	elseif ($array2[2]==" Windows NT 5.0") {
	  $OS=" Windows 2000"; }
	else {
	  $OS=$array2[2]; }
	
	return $OS;
}

function browdet() 
{
$array=explode(")", $_SERVER['HTTP_USER_AGENT']);
$array2=explode(";", $_SERVER['HTTP_USER_AGENT']);
        
       if ($array2[1]!=" U") {
	  $browser=$array2[1]; }
	else {
	  $browser=$array[1]; }
	
	return $browser;
}

function quotegen () 
{
	srand((double)microtime()*1000000); 
	$arry_txt=preg_split("/\n/",join('',file("quotes.txt"))); 
	$quote=$arry_txt[rand(0,sizeof($arry_txt)-1)];
	return $quote;
}
	
$im=imagecreatefrompng("images/signiture.png");
$orange=imagecolorallocate($im, 220, 210, 60);
$red=imagecolorallocate($im, 225, 0, 0);
$blue=imagecolorallocate($im,  95, 95, 128);

imagestring($im, 1, 130, 10, "Your OS:".osdet(), $red);
imagestring($im, 1, 50, 18, "Your IP: ".$_SERVER['REMOTE_ADDR'], $blue);
imagestring($im, 1, 50, 26, "Your Host: ".gethostbyaddr($_SERVER['REMOTE_ADDR']), $blue);
imagestring($im, 1, 50, 34, "Your Browser: ".browdet(), $blue);
imagestring($im, 1, 1, 43, quotegen(), $orange);


imagepng($im);
imagedestroy($im);
?>
-Enjoy-
AzE