分別用 PHP 與 ASP.NET (C#) 動態生成圖片,顯示訪客 IP、語言、作業系統、瀏覽器等資訊,可作為簽名檔或偵測展示。
<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.IO" %>
<%
string sReferer = Request.ServerVariables["HTTP_REFERER"];
string sLanguage, sBrowser, sSys;
if (Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"].IndexOf("zh-cn") >= 0) {
sLanguage = "Chinese";
} else {
sLanguage = Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];
}
string[] aUserAgent = Request.ServerVariables["HTTP_USER_AGENT"].Split(';');
if (aUserAgent.Length > 2) {
sBrowser = aUserAgent[1].Replace("MSIE", "Internet Explorer").Trim();
if (sBrowser == "U") sBrowser = "Mozilla";
sSys = aUserAgent[2].Replace(")", "").Trim();
sSys = sSys.Replace("NT 5.2", "2003")
.Replace("NT 5.1", "XP")
.Replace("NT 5.0", "2000")
.Replace("9x", "Me");
} else {
sBrowser = "Unknown"; sSys = "Unknown";
}
int nWidth = 260, nHeight = 90;
Bitmap image = new Bitmap(nWidth, nHeight);
Graphics g = Graphics.FromImage(image);
g.Clear(Color.Snow);
g.DrawRectangle(Pens.Black, 0, 0, nWidth-1, nHeight-1);
g.DrawString("Your IP: " + Request.ServerVariables["REMOTE_ADDR"],
new Font("Courier New", 9, FontStyle.Bold), new SolidBrush(Color.FromArgb(200,14,91)), 6, 6);
g.DrawString("Language: " + sLanguage,
new Font("Courier New", 9, FontStyle.Bold), new SolidBrush(Color.Black), 6, 26);
g.DrawString("Your OS: " + sSys,
new Font("Courier New", 9, FontStyle.Bold), new SolidBrush(Color.Blue), 6, 46);
g.DrawString("Browser: " + sBrowser,
new Font("Courier New", 9, FontStyle.Bold), new SolidBrush(Color.Green), 6, 66);
g.Dispose();
Response.ContentType = "image/gif";
image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
%>
<?php
header("Content-Type: image/gif");
$img = imagecreatetruecolor(260, 90);
$bg = imagecolorallocate($img, 255, 250, 250); // Snow
$black = imagecolorallocate($img, 0, 0, 0);
$red = imagecolorallocate($img, 200, 14, 91);
$blue = imagecolorallocate($img, 0, 0, 255);
$green = imagecolorallocate($img, 0, 160, 0);
imagefilledrectangle($img, 0, 0, 259, 89, $bg);
imagerectangle($img, 0, 0, 259, 89, $black);
$ip = $_SERVER['REMOTE_ADDR'];
$lang = (stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? '', 'zh-cn') !== false) ? 'Chinese' : ($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? 'Unknown');
$ua = $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown';
// 簡易 UA 解析(生產建議用 ua-parser 库)
$browser = 'Unknown'; $os = 'Unknown';
if (preg_match('/MSIE|Trident/', $ua)) $browser = 'Internet Explorer';
elseif (preg_match('/Firefox/', $ua)) $browser = 'Firefox';
elseif (preg_match('/Chrome/', $ua)) $browser = 'Chrome';
elseif (preg_match('/Safari/', $ua)) $browser = 'Safari';
if (preg_match('/Windows NT 10.0/', $ua)) $os = 'Windows 10';
elseif (preg_match('/Windows NT 6.3/', $ua)) $os = 'Windows 8.1';
elseif (preg_match('/Windows NT 6.1/', $ua)) $os = 'Windows 7';
elseif (preg_match('/Linux/', $ua)) $os = 'Linux';
elseif (preg_match('/Mac OS X/', $ua)) $os = 'Mac OS X';
$font = 5; // 內建字體
imagestring($img, $font, 6, 6, "Your IP: $ip", $red);
imagestring($img, $font, 6, 26, "Language: $lang", $black);
imagestring($img, $font, 6, 46, "Your OS: $os", $blue);
imagestring($img, $font, 6, 66, "Browser: $browser", $green);
imagegif($img);
imagedestroy($img);
?>
<img src="info.php"> 嵌入論壇簽名、部落格側邊欄。Cache-Control: max-age=60)減少重複生成。ua-parser/uap-php;.NET: UAParser)。