About Etext Wizard

EtextWizard

目录：

一、关于Etext Wizard:

  1. 软件开发目的及软件用途
  2. 软件的主要功能
  3. 软件的安装及卸载
  4. 软件的注册
  5. 软件的下载地址

二、“北极星工作室”的其他软件：

三、我的主页及联系方式：
一、关于Etext Wizard: Top
1.软件开发目的及软件用途 Top
相信各位在上网一段时间后，硬盘里一定积攒了大量的电子文本，如：
技巧集锦、教程、技术文章、编程指南、小说、散文、传记等等，这些
精彩文件平时大量占用你的硬盘空间，一到用的时候，怎么也找不到；
读起来也很费力，一部《三国》你至少要打开一百二十个文件；而且
第二天也找不到昨天读到那里了，你说急人不急人！
   终于有一天想把他们作成帮助文件，但是，面对某个目录下的几千个
文本文件，才发现所谓的“所见即所得”的帮助文件制作软件竟然要
一个又一个地“手工重复劳作”........
  我曾经用Help&Manual手工作了一个包含两千多条Delphi技巧的帮助文件，
历时两三周终于完成，可是...手抽筋，眼发晕，食欲不振.......
  有时，真的希望有人把我想要的文本全处理好再放到网上，可是...
  面对网上成兆亿的文本难道只有手工处理吗？
  由此，萌发了我的软件开发方向：电子文档处理。

“把繁重而又重复乏味的工作全部交给电脑去做吧！
    人的智慧在于告诉它应该怎么做！”
                                —xxx如是说。

2.软件的主要功能 Top

                功能
                 | 简介

                Txt->Help
                 | 文本文件转帮助文件，支持UNIX格式的TXT，自动添加标题、目录、索引。

                Txt->Html
                 | 文本文件转网页，自动处理URL&EMAIL

                Txt->Chm
                 | 文本文件转网页帮助文件，自动添加目录、索引、
                前页、后页等

                Html->Txt
                 | 网页文件转文本，转换完成比较干净彻底
                （可处理&nbsp;等），支持部分ASP文件。

                Html->Chm
                 | 网页文件转网页帮助文件，自动添加目录、索引。

                VBcode->Html
                 | VB源程序转为网页文件便于浏览。

                FileRenamer
                 | 批量文件改名，可预览结果，众多实用选项。

                Index Maker
                 | 对一个或多个目录下的所有或部分文件作索引，
                自动提取网页的<Title>作为标题，自动提取
                TXT第一行作为标题，多种输出格式。

                Dir Maker
                 | 批量目录建造。 *

                Title Editor
                 | 文本文件的标题编辑器及文件预览器。*

                Find&Replace
                 | 批量文件字符串查找替换器
                *

                Big5->GB

       注解：带*的项目尚未最终完成

3.软件的安装及卸载 Top

运行环境： MS win95;win98;win2000. win98以前的版本运行需要VB5.0
          的链接库文件MSVBVM50.DLL。

安装：

直接运行完全安装版即可（建议初次安装使用完全安装版）；
如果你以前安装过EtextWizard，直接下载新版本的主执行文件
EtextWizard.exe覆盖原来的即可。

卸载：

运行“控制面版”的“添加和删除程序”，找到“电子文档处理器”，
  选“卸载”，再依屏幕操作即可。

4.软件的注册 Top

本软件为“共享软件”，即“先试后买”的软件。

由于目前正处于测试阶段，故软件价格待定。

5.软件的下载地址:

本软件将会不定期更新版本，请留意！

http://dadao.net/pub/guohua99/softdown.htm

二、“北极星工作室”的其他软件： Top

TextVampire(网络即时贴) v1.0：Top
浏览文本或网页时，随时把你喜欢的文字很方便地存成.Txt文件。
你要做的只是选好文本，再按一下CTRL-C，这时，点击“网络即时贴”的
粘贴并生成文本文件”钮，TextVampire会自动截取所选文本的第一行（非空）
作为文件名保存起来，方便你将来收集整理、查找；同时也简化了你的击键次数。

http://dadao.net/pub/guohua99/softdown.htm

三、我的主页及联系方式： Top

我的主要站点：

http://dadao.net/pub/guohua99/
 (北极星书库)

(虚拟域名：http://fengguoguohua.yeah.net/)

http://fengguohua.myrice.com/
 (北极星软件库)

http://go.163.com/~guohua99/(电子文档处理器)

镜像站点：

http://members.xoom.com/fengguohua/

http://guohua99.363.net/

eMail:

fengguohua@hotmail.com

警告：Top

对重要文件请先作好备份，以免造成不必要的损失；
用户试用此软件的同时由用户个人承担试用此软件的一切风险，如用户不接受
此项要求请马上把本程序从你的硬盘删除； TXT转HELP结束后，程序会自动删除
已处理过的目录下的所有RTF文件，请在运行前
检查该目录下是否有重要的RTF文件，请作好备份。
请不要使用本软件制作非法电子出版物，否则一切后果由制作人自行承担，与本软件作者无关。
请不要修改本软件的版权信息（包括随软件发布的一切文档），否则作者将保留追究其法律责任的权利。
在不修改作者版权信息及保证软件完整性的前提下，任何个人或组织可随意发布或试用本软件的免费共享版，
但不得对本软件做任何逆向工程（指反汇编、反编译，公布注册码、散发正式版等）。
本文档中所指“程序”或“本程序”均指EtextWizard(中文名：电子文档处理器)。

注：MS,Windows Help(hcw.exe,hcrtf.exe),Html Help(hhw.exe,hhc.exe)的版权均归美国微软公司所有。

All Rights Reserved, Fengguohua of North Star, 2000-05-03

Top


北极星书库-->PHP 的一些例程(佚名)

北极星书库

PHP 的一些例程

计数器程序 | 一个有关颜色的定义列表
Chart（图表） 程序 | Banner程序
简单留言簿程序 | 圆饼图程序
日期选择器 | 一个日历程序
一个画饼图程序 | 简单BBS程序（需MySQL支持）
邮件发送程序 | 动态按钮程序
POP3、SMTP邮件收发程序 | MIME邮件程序
InString 函数程序 | 用户访问记录程序
北极星书库


Get Update News

Update Link:
http://dadao.net/pub/guohua99/softdown.htm

程序会经常更新，请登陆网站以得到最新版本。如有任何意见和建议也请给我发Email。

我的Email地址： fengguohua@hotmail.com。


Goto EtextWizard's Homepage

My Homepage:
http://dadao.net/pub/guohua99/

这里有许多已经经过我的“电子文档处理器”处理过的Windows帮助文件或Windows HtmlHelp格式的小说、传记等作为范本供大家参考。


计数器程序(佚名)

 回目录
计数器程序

<?
/////////////////////////////////////////////////////////////////////////
//
// counter.php - 实现一个很简单的计数器
//
// 作者： Claus Radloff
//
// 描述：
// 这个计数器可以变成多重的计数器。因此，每一个 计数器可以自己得到自己
// 的身份证明。
//
// 前面的部分——是背景色以及数字的定义，你可能自行修改。
// 当然，如果背景色是透明的那就更好了。
//
// 以下是一些在 URL 中的参数：
// 例如：
// Simple Counter：
//   <img src="counter.php?Identifier=Test">
//
// 红色背景的计数器：
//   <img src="counter.php?Identifier=Test&BGColor=255+0+0">
// 或者是：
//   <img src="counter.php?Identifier=Test&BGColor=red">
//
// 红色背景，绿色前景，只有4位数的计数器
//   <img src="counter.php?Identifier=Test&BGColor=255+0+0&FGColor=0+255+0&Length=4">
// 或是：
//   <img src="counter.php?Identifier=Test&BGColor=red&FGColor=green&Length=4">
//
// 透明背景和红色前景的样式：
//   <img src="counter.php?Identifier=Test&BGColor=transparent&FGColor=red">
//

4/14/2000    Mouse
Chen( litmouse@km169.net   )    Translate
it to Chinese

Header( "Content-type: image/gif");

require( "colors.php");

// 装载GD-Library
// Windows下是这条语句：dl("php3_gd.dll");
// 而 UNIX 就应该是下面这条：
dl( "php3_gd.so");

// 一些初始设定
$Font     = 5;
$BGColor  = GetColor( "black");
$BGTrans  = False;
$FGColor  = GetColor( "white");
$FGTrans  = False;
$Length   = 7;

// 取得输入参数
$query_string = getenv( "QUERY_STRING");

// 分析输入的参数
// 并分闻参数
$env_array = split( "&", $query_string);

// 把参数及其值分开，并把值转成 %XX的形式
while (list($key, $val) = each($env_array))
{
list($name, $wert) = split( "=", $val);

$name = urldecode($name);
$wert = urldecode($wert);

// 写入 $cgivars
$CGIVars[$name] = $wert;
}

// 用输入的参数重新设定初始值
if ($CGIVars[ "BGColor"])
{
if (ereg( "([0-9]*) ([0-9]*) ([0-9]*)", $CGIVars[
"BGColor"], $tmp))
{
$BGColor[ "red"]   = $tmp[1];
$BGColor[ "green"] = $tmp[2];
$BGColor[ "blue"]  = $tmp[3];
}
else if (eregi( "transparent", $CGIVars[
"BGColor"]))
{
$BGTrans = True;
}
else
{
$BGColor = GetColor($CGIVars[
"BGColor"]);
}
}

if ($CGIVars[ "FGColor"])
{
if (ereg( "([0-9]*) ([0-9]*) ([0-9]*)", $CGIVars[
"FGColor"], $tmp))
{
$FGColor[ "red"]   = $tmp[1];
$FGColor[ "green"] = $tmp[2];
$FGColor[ "blue"]  = $tmp[3];
}
else if (eregi( "transparent", $CGIVars[
"FGColor"]))
{
$FGTrans = True;
}
else
{
$FGColor = GetColor($CGIVars[
"FGColor"]);
}
}

if ($CGIVars[ "Length"])
{
$Length = $CGIVars[ "Length"];
}

$SizeX = $Length * 13;
$SizeY = 16;

// 读入 counter-文件
if (file_exists( "counter.txt"))
{
$fp = fopen( "counter.txt",  "rt");
while ($Line = fgets($fp, 999))
{
if (ereg( "([^ ]*) *([0-9]*)", $Line, $tmp))
{
$CArr[
"$tmp[1]"] = $tmp[2];
}
}

fclose($fp);

// 得到计数器的标志
$Counter = $CArr[$CGIVars[
"Identifier"]];
$Counter += 1;
$CArr[$CGIVars[ "Identifier"]] = $Counter;
}
else
{
// 新的计数器初值为1
$CArr[$CGIVars[
"Identifier"]] = 1;
$Counter = 1;
}

// 写入计数器文件中
$fp = fopen( "counter.txt",  "wt");

reset($CArr);
while (list($Key, $Value) = each($CArr))
{
$tmp = sprintf( "%s %d\n", $Key, $Value);
fwrite($fp, $tmp);
}

fclose($fp);

$Counter = sprintf( "%0".$Length.
"d", $Counter);

// 创建
image
$img = ImageCreate($SizeX + 4, $SizeY + 4);

ImageInterlace($img, 1);

// 透明颜色
$trans = ImageColorAllocate($img, 1, 1, 1);
ImageColorTransparent($img, $trans);

// 填充背景色
if ($BGTrans)
{
ImageFill($img, 1, 1, $trans);
}
else
{
$col = ImageColorAllocate($img, $BGColor[
"red"], $BGColor[ "green"],
$BGColor[
"blue"]);
ImageFill($img, 1, 1, $col);
}

// 输出数字
if ($FGTrans)
{
$col = $trans;
}
else
{
$col = ImageColorAllocate($img, $FGColor[
"red"], $FGColor[ "green"],
$FGColor[
"blue"]);
}

$PosX = 0;
for ($i = 1; $i <= strlen($Counter); $i++)
{
ImageString($img, $Font, $PosX + 3, 2 + $i % 2,
substr($Counter, $i - 1, 1), $col);

if ($i != 1)
{
ImageLine($img, $PosX, 0, $PosX, $SizeY + 4, $trans);
}

$PosX += 13;
}

// 输出图片
ImageGif($img);
ImageDestroy($img);
?>

回目录


一个有关颜色的定义列表(佚名)

一个有关颜色的定义列表

<?
////////////////////////////////////////////////////////
//
// colors.php - 这个程序只是定义了一些颜色的名字。
//
// Author: Claus Radloff
//
// 描述：定义了一个颜色名字的联合数组。每个实体是由一个颜
//    色的名字和其RGB的参数所组成。函数GetColor 用颜色名做
//    参数，并且返回一个由RGB颜色所组成的联合数组。
//
//   4/14/2000    Mouse Chen( litmouse@km169.net   )    Translate
it to Chinese

$Colors = array(

//  HTML 3.规范中所定义的颜色
"black"=>array( "red"=>0x00,
"green"=>0x00,  "blue"=>0x00),
"maroon"=>array( "red"=>0x80,
"green"=>0x00,  "blue"=>0x00),
"green"=>array( "red"=>0x00,
"green"=>0x80,  "blue"=>0x00),
"olive"=>array( "red"=>0x80,
"green"=>0x80,  "blue"=>0x00),
"navy"=>array( "red"=>0x00,
"green"=>0x00,  "blue"=>0x80),
"purple"=>array( "red"=>0x80,
"green"=>0x00,  "blue"=>0x80),
"teal"=>array( "red"=>0x00,
"green"=>0x80,  "blue"=>0x80),
"gray"=>array( "red"=>0x80,
"green"=>0x80,  "blue"=>0x80),
"silver"=>array( "red"=>0xC0,
"green"=>0xC0,  "blue"=>0xC0),
"red"=>array( "red"=>0xFF,
"green"=>0x00,  "blue"=>0x00),
"lime"=>array( "red"=>0x00,
"green"=>0xFF,  "blue"=>0x00),
"yellow"=>array( "red"=>0xFF,
"green"=>0xFF,  "blue"=>0x00),
"blue"=>array( "red"=>0x00,
"green"=>0x00,  "blue"=>0xFF),
"fuchsia"=>array( "red"=>0xFF,
"green"=>0x00,  "blue"=>0xFF),
"aqua"=>array( "red"=>0x00,
"green"=>0xFF,  "blue"=>0xFF),
"white"=>array( "red"=>0xFF,
"green"=>0xFF,  "blue"=>0xFF),

//  Netscape and IE所附加定义的颜色
"aliceblue"=>array( "red"=>0xF0,
"green"=>0xF8,  "blue"=>0xFF),
"antiquewhite"=>array( "red"=>0xFA,
"green"=>0xEB,  "blue"=>0xD7),
"aquamarine"=>array( "red"=>0x7F,
"green"=>0xFF,  "blue"=>0xD4),
"azure"=>array( "red"=>0xF0,
"green"=>0xFF,  "blue"=>0xFF),
"beige"=>array( "red"=>0xF5,
"green"=>0xF5,  "blue"=>0xDC),
"blueviolet"=>array( "red"=>0x8A,
"green"=>0x2B,  "blue"=>0xE2),
"brown"=>array( "red"=>0xA5,
"green"=>0x2A,  "blue"=>0x2A),
"burlywood"=>array( "red"=>0xDE,
"green"=>0xB8,  "blue"=>0x87),
"cadetblue"=>array( "red"=>0x5F,
"green"=>0x9E,  "blue"=>0xA0),
"chartreuse"=>array( "red"=>0x7F,
"green"=>0xFF,  "blue"=>0x00),
"chocolate"=>array( "red"=>0xD2,
"green"=>0x69,  "blue"=>0x1E),
"coral"=>array( "red"=>0xFF,
"green"=>0x7F,  "blue"=>0x50),
"cornflowerblue"=>array( "red"=>0x64,
"green"=>0x95,  "blue"=>0xED),
"cornsilk"=>array( "red"=>0xFF,
"green"=>0xF8,  "blue"=>0xDC),
"crimson"=>array( "red"=>0xDC,
"green"=>0x14,  "blue"=>0x3C),
"darkblue"=>array( "red"=>0x00,
"green"=>0x00,  "blue"=>0x8B),
"darkcyan"=>array( "red"=>0x00,
"green"=>0x8B,  "blue"=>0x8B),
"darkgoldenrod"=>array( "red"=>0xB8,
"green"=>0x86,  "blue"=>0x0B),
"darkgray"=>array( "red"=>0xA9,
"green"=>0xA9,  "blue"=>0xA9),
"darkgreen"=>array( "red"=>0x00,
"green"=>0x64,  "blue"=>0x00),
"darkkhaki"=>array( "red"=>0xBD,
"green"=>0xB7,  "blue"=>0x6B),
"darkmagenta"=>array( "red"=>0x8B,
"green"=>0x00,  "blue"=>0x8B),
"darkolivegreen"=>array( "red"=>0x55,
"green"=>0x6B,  "blue"=>0x2F),
"darkorange"=>array( "red"=>0xFF,
"green"=>0x8C,  "blue"=>0x00),
"darkorchid"=>array( "red"=>0x99,
"green"=>0x32,  "blue"=>0xCC),
"darkred"=>array( "red"=>0x8B,
"green"=>0x00,  "blue"=>0x00),
"darksalmon"=>array( "red"=>0xE9,
"green"=>0x96,  "blue"=>0x7A),
"darkseagreen"=>array( "red"=>0x8F,
"green"=>0xBC,  "blue"=>0x8F),
"darkslateblue"=>array( "red"=>0x48,
"green"=>0x3D,  "blue"=>0x8B),
"darkslategray"=>array( "red"=>0x2F,
"green"=>0x4F,  "blue"=>0x4F),
"darkturquoise"=>array( "red"=>0x00,
"green"=>0xCE,  "blue"=>0xD1),
"darkviolet"=>array( "red"=>0x94,
"green"=>0x00,  "blue"=>0xD3),
"deeppink"=>array( "red"=>0xFF,
"green"=>0x14,  "blue"=>0x93),
"deepskyblue"=>array( "red"=>0x00,
"green"=>0xBF,  "blue"=>0xFF),
"dimgray"=>array( "red"=>0x69,
"green"=>0x69,  "blue"=>0x69),
"dodgerblue"=>array( "red"=>0x1E,
"green"=>0x90,  "blue"=>0xFF),
"firebrick"=>array( "red"=>0xB2,
"green"=>0x22,  "blue"=>0x22),
"floralwhite"=>array( "red"=>0xFF,
"green"=>0xFA,  "blue"=>0xF0),
"forestgreen"=>array( "red"=>0x22,
"green"=>0x8B,  "blue"=>0x22),
"gainsboro"=>array( "red"=>0xDC,
"green"=>0xDC,  "blue"=>0xDC),
"ghostwhite"=>array( "red"=>0xF8,
"green"=>0xF8,  "blue"=>0xFF),
"gold"=>array( "red"=>0xFF,
"green"=>0xD7,  "blue"=>0x00),
"goldenrod"=>array( "red"=>0xDA,
"green"=>0xA5,  "blue"=>0x20),
"greenyellow"=>array( "red"=>0xAD,
"green"=>0xFF,  "blue"=>0x2F),
"honeydew"=>array( "red"=>0xF0,
"green"=>0xFF,  "blue"=>0xF0),
"hotpink"=>array( "red"=>0xFF,
"green"=>0x69,  "blue"=>0xB4),
"indianred"=>array( "red"=>0xCD,
"green"=>0x5C,  "blue"=>0x5C),
"indigo"=>array( "red"=>0x4B,
"green"=>0x00,  "blue"=>0x82),
"ivory"=>array( "red"=>0xFF,
"green"=>0xFF,  "blue"=>0xF0),
"khaki"=>array( "red"=>0xF0,
"green"=>0xE6,  "blue"=>0x8C),
"lavender"=>array( "red"=>0xE6,
"green"=>0xE6,  "blue"=>0xFA),
"lavenderblush"=>array( "red"=>0xFF,
"green"=>0xF0,  "blue"=>0xF5),
"lawngreen"=>array( "red"=>0x7C,
"green"=>0xFC,  "blue"=>0x00),
"lemonchiffon"=>array( "red"=>0xFF,
"green"=>0xFA,  "blue"=>0xCD),
"lightblue"=>array( "red"=>0xAD,
"green"=>0xD8,  "blue"=>0xE6),
"lightcoral"=>array( "red"=>0xF0,
"green"=>0x80,  "blue"=>0x80),
"lightcyan"=>array( "red"=>0xE0,
"green"=>0xFF,  "blue"=>0xFF),
"lightgoldenrodyellow"=>array( "red"=>0xFA,
"green"=>0xFA,  "blue"=>0xD2),
"lightgreen"=>array( "red"=>0x90,
"green"=>0xEE,  "blue"=>0x90),
"lightgrey"=>array( "red"=>0xD3,
"green"=>0xD3,  "blue"=>0xD3),
"lightpink"=>array( "red"=>0xFF,
"green"=>0xB6,  "blue"=>0xC1),
"lightsalmon"=>array( "red"=>0xFF,
"green"=>0xA0,  "blue"=>0x7A),
"lightseagreen"=>array( "red"=>0x20,
"green"=>0xB2,  "blue"=>0xAA),
"lightskyblue"=>array( "red"=>0x87,
"green"=>0xCE,  "blue"=>0xFA),
"lightslategray"=>array( "red"=>0x77,
"green"=>0x88,  "blue"=>0x99),
"lightsteelblue"=>array( "red"=>0xB0,
"green"=>0xC4,  "blue"=>0xDE),
"lightyellow"=>array( "red"=>0xFF,
"green"=>0xFF,  "blue"=>0xE0),
"limegreen"=>array( "red"=>0x32,
"green"=>0xCD,  "blue"=>0x32),
"linen"=>array( "red"=>0xFA,
"green"=>0xF0,  "blue"=>0xE6),
"mediumaquamarine"=>array( "red"=>0x66,
"green"=>0xCD,  "blue"=>0xAA),
"mediumblue"=>array( "red"=>0x00,
"green"=>0x00,  "blue"=>0xCD),
"mediumorchid"=>array( "red"=>0xBA,
"green"=>0x55,  "blue"=>0xD3),
"mediumpurple"=>array( "red"=>0x93,
"green"=>0x70,  "blue"=>0xD0),
"mediumseagreen"=>array( "red"=>0x3C,
"green"=>0xB3,  "blue"=>0x71),
"mediumslateblue"=>array( "red"=>0x7B,
"green"=>0x68,  "blue"=>0xEE),
"mediumspringgreen"=>array( "red"=>0x00,
"green"=>0xFA,  "blue"=>0x9A),
"mediumturquoise"=>array( "red"=>0x48,
"green"=>0xD1,  "blue"=>0xCC),
"mediumvioletred"=>array( "red"=>0xC7,
"green"=>0x15,  "blue"=>0x85),
"midnightblue"=>array( "red"=>0x19,
"green"=>0x19,  "blue"=>0x70),
"mintcream"=>array( "red"=>0xF5,
"green"=>0xFF,  "blue"=>0xFA),
"mistyrose"=>array( "red"=>0xFF,
"green"=>0xE4,  "blue"=>0xE1),
"moccasin"=>array( "red"=>0xFF,
"green"=>0xE4,  "blue"=>0xB5),
"navajowhite"=>array( "red"=>0xFF,
"green"=>0xDE,  "blue"=>0xAD),
"oldlace"=>array( "red"=>0xFD,
"green"=>0xF5,  "blue"=>0xE6),
"olivedrab"=>array( "red"=>0x6B,
"green"=>0x8E,  "blue"=>0x23),
"orange"=>array( "red"=>0xFF,
"green"=>0xA5,  "blue"=>0x00),
"orangered"=>array( "red"=>0xFF,
"green"=>0x45,  "blue"=>0x00),
"orchid"=>array( "red"=>0xDA,
"green"=>0x70,  "blue"=>0xD6),
"palegoldenrod"=>array( "red"=>0xEE,
"green"=>0xE8,  "blue"=>0xAA),
"palegreen"=>array( "red"=>0x98,
"green"=>0xFB,  "blue"=>0x98),
"paleturquoise"=>array( "red"=>0xAF,
"green"=>0xEE,  "blue"=>0xEE),
"palevioletred"=>array( "red"=>0xDB,
"green"=>0x70,  "blue"=>0x93),
"papayawhip"=>array( "red"=>0xFF,
"green"=>0xEF,  "blue"=>0xD5),
"peachpuff"=>array( "red"=>0xFF,
"green"=>0xDA,  "blue"=>0xB9),
"peru"=>array( "red"=>0xCD,
"green"=>0x85,  "blue"=>0x3F),
"pink"=>array( "red"=>0xFF,
"green"=>0xC0,  "blue"=>0xCB),
"plum"=>array( "red"=>0xDD,
"green"=>0xA0,  "blue"=>0xDD),
"powderblue"=>array( "red"=>0xB0,
"green"=>0xE0,  "blue"=>0xE6),
"rosybrown"=>array( "red"=>0xBC,
"green"=>0x8F,  "blue"=>0x8F),
"royalblue"=>array( "red"=>0x41,
"green"=>0x69,  "blue"=>0xE1),
"saddlebrown"=>array( "red"=>0x8B,
"green"=>0x45,  "blue"=>0x13),
"salmon"=>array( "red"=>0xFA,
"green"=>0x80,  "blue"=>0x72),
"sandybrown"=>array( "red"=>0xF4,
"green"=>0xA4,  "blue"=>0x60),
"seagreen"=>array( "red"=>0x2E,
"green"=>0x8B,  "blue"=>0x57),
"seashell"=>array( "red"=>0xFF,
"green"=>0xF5,  "blue"=>0xEE),
"sienna"=>array( "red"=>0xA0,
"green"=>0x52,  "blue"=>0x2D),
"skyblue"=>array( "red"=>0x87,
"green"=>0xCE,  "blue"=>0xEB),
"slateblue"=>array( "red"=>0x6A,
"green"=>0x5A,  "blue"=>0xCD),
"slategray"=>array( "red"=>0x70,
"green"=>0x80,  "blue"=>0x90),
"snow"=>array( "red"=>0xFF,
"green"=>0xFA,  "blue"=>0xFA),
"springgreen"=>array( "red"=>0x00,
"green"=>0xFF,  "blue"=>0x7F),
"steelblue"=>array( "red"=>0x46,
"green"=>0x82,  "blue"=>0xB4),
"tan"=>array( "red"=>0xD2,
"green"=>0xB4,  "blue"=>0x8C),
"thistle"=>array( "red"=>0xD8,
"green"=>0xBF,  "blue"=>0xD8),
"tomato"=>array( "red"=>0xFF,
"green"=>0x63,  "blue"=>0x47),
"turquoise"=>array( "red"=>0x40,
"green"=>0xE0,  "blue"=>0xD0),
"violet"=>array( "red"=>0xEE,
"green"=>0x82,  "blue"=>0xEE),
"wheat"=>array( "red"=>0xF5,
"green"=>0xDE,  "blue"=>0xB3),
"whitesmoke"=>array( "red"=>0xF5,
"green"=>0xF5,  "blue"=>0xF5),
"yellowgreen"=>array( "red"=>0x9A,
"green"=>0xCD,  "blue"=>0x32));

// GetColor函数返回一个有关RGB三原色的联合数组
function GetColor($Colorname)
{
global $Colors;
return $Colors[$Colorname];
}
?>


Chart（图表） 程序(佚名)

Chart（图表） 程序

<?php
/* Copyright (C) 1998 Afan Ottenheimer, afan@jeonet.com

这个程序可无条件和在GNU GPL条款下传播的。

在以下情况下，你必须要有我们的许可证才能使用该程序：如果该程序是用于某个商业公司，
或是被用来买卖，或是提供给Microsoft的产品。

你可以从 GNU GPL 的这个网址获取该程序的拷贝： http://www.gnu.org/copyleft/gpl.html
*/

/* 一些有关该程序的说明：
它做了一个二维的Chart（图表），其中的X轴是标签轴，而Y轴则是数字轴。
Y轴用到了一个叫n_max_y方法，该用于把数据转换成图表。
X轴没有这种转换。每个X轴上的刻度可以由xlab[N]得到，这里N是一个整数。
*/

/* 4/14/2000 Mouse Chen( litmouse@km169.net ) Translate it to Chinese */

/* 读入数据*/
$maxy = $maxy_in;
if ($maxy == 0) {
echo "Error Max Y = 0 <p>";
exit;
}
SetType($maxy, "double");

/* X轴是由一个叫 $maxx的变量分割成从 0 到 $maxx-1的部分的 */
$maxx = $maxx_in;
if ($maxx <= 0) {
echo "error maxx <= 0 <p>";
exit;
}
SetType($maxx, "double");

$XSIZE = $XSIZE_in; /*图片最大的宽度（单位：象素） */
SetType($XSIZE, "double");

$YSIZE = $YSIZE_in; /*图片最大的高度（单位：象素） */
SetType($YSIZE, "double");

$num_vert_ticks = $num_vert_ticks_in;
if ($num_vert_ticks <= 0) {
echo "error num_vert_ticks <= 0 <p>";
exit;
}
SetType($num_vert_ticks, "double");

$y_title = $y_title_in;
$x_title = $x_title_in;
/* *********读入数据完成********** */

/* 创建一个文件类型头 */
Header( "Content-Type: image/gif");

$x_tot_margin = 100.0;
SetType($x_tot_margin, "double");
$x_left_margin = 77.0; /* 在X轴上左边的空白距离（单位：象素）*/
SetType($x_left_margin, "double");

$xscale = ($XSIZE - $x_tot_margin)/$maxx ;
SetType($xscale, "double");

$y_top_margin = 14.0; /* 必须是整型数 */
SetType($y_top_margin, "double");
$y_tot_margin = 80.0; /* 必须是整型数 */
SetType($y_tot_margin, "double");
$yscale = ($YSIZE - $y_tot_margin)/$maxy; /* 屏幕最大的高度 */
SetType($yscale, "double");
$y_bot_margin = $y_tot_margin - $y_top_margin;
SetType($y_bot_margin, "double");

/* Y轴是由一个叫 $maxy变量分割成的 */
$y_tick_delta = $maxy / $num_vert_ticks;
SetType($y_tick_delta, "double");

$si_units[0] = "";
$si_units[1] = "k";
$si_units[2] = "M";
$si_units[3] = "G";
$si_units[4] = "T";
$small_font = 2; /* 字体大小：fonts = 1,2,3,4 或 5 */
$small_font_width = 6.0;
$small_font_height = 10.0;
$tiny_font = 1;
$c_blank[0] = "245";
$c_blank[1] = "245";
$c_blank[2] = "245";
$c_light[0] = "194";
$c_light[1] = "194";
$c_light[2] = "194";
$c_dark[0] = "100";
$c_dark[1] = "100";
$c_dark[2] = "100";
$c_major[0] = "255";
$c_major[1] = "0";
$c_major[2] = "0";
$c_grid[0] = "0";
$c_grid[1] = "0";
$c_grid[2] = "0";
$col_in[0] = "0";
$col_in[1] = "235";
$col_in[2] = "12";
$col_inm[0] = "0";
$col_inm[1] = "166";
$col_inm[2] = "33";
$col_out[0] = "0";
$col_out[1] = "94";
$col_out[2] = "255";
$col_outm[0] = "255";
$col_outm[1] = "0";
$col_outm[2] = "255";

/* ################################################# */
/* 图表的一些普通的定义*/
$XSIZE = (($maxx*$xscale)+100);

/* 图表的位置 */
/* 把 x/y 的 coord 转换成 象素的 coord */
old_function ytr $y (
SetType($y, "double");
global $maxy,$yscale,$y_top_margin;
return ($maxy*$yscale+$y_top_margin-(($y)*$yscale));
);
old_function xtr $x (
SetType($x, "double");
global $maxx,$xscale,$growright,$x_left_margin;
if ($growright) {
$tmpret = ($maxx*$xscale+$x_left_margin-(($x)*$xscale)) ;
} else {
$tmpret = ($x_left_margin+(($x)*$xscale));
}
return($tmpret);
);

$graph = ImageCreate($XSIZE, $YSIZE);
/* 要能正确让 brush_out和 brush_outm 为 ImageSetBrush 而使用，必须是GD 第三版 */
/*
$brush_out = ImageCreate(1,2);
$brush_outm = ImageCreate(1,2);
$i_outm = ImageColorAllocate($brush_outm,$col_outm[0], $col_outm[1], $col_outm[2]);
$i_out = ImageColorAllocate($brush_out,$col_out[0], $col_out[1], $col_out[2]);
*/

/* 先分配一个背景色. */
$i_blank = ImageColorAllocate($graph,$c_blank[0],$c_blank[1],$c_blank[2]);
$i_light = ImageColorAllocate($graph,$c_light[0],$c_light[1],$c_light[2]);
$i_dark = ImageColorAllocate($graph,$c_dark[0],$c_dark[1],$c_dark[2]);

/* ImageColorTransparent($graph, $i_blank); */
/* ImageInterlace($graph, 1); */

$i_grid = ImageColorAllocate($graph,$c_grid[0],$c_grid[1],$c_grid[2] );
$i_major = ImageColorAllocate($graph,$c_major[0],$c_major_g,$c_major_b);

$i_in = ImageColorAllocate($graph,$col_in[0], $col_in[1], $col_in[2]);
$i_inm = ImageColorAllocate($graph,$col_inm[0], $col_inm[1], $col_inm[2]);

/* 为图片画个边框 */
ImageLine($graph,0,0,$XSIZE-1,0,$i_light);
ImageLine($graph,1,1,$XSIZE-2,1,$i_light);
ImageLine($graph,0,0,0,$YSIZE-1,$i_light);
ImageLine($graph,1,1,1,$YSIZE-2,$i_light);
ImageLine($graph,$XSIZE-1,0,$XSIZE-1,$YSIZE-1,$i_dark);
ImageLine($graph,0,$YSIZE-1,$XSIZE-1,$YSIZE-1,$i_dark);
ImageLine($graph,$XSIZE-2,1,$XSIZE-2,$YSIZE-2,$i_dark);
ImageLine($graph,1,$YSIZE-2,$XSIZE-2,$YSIZE-2,$i_dark);

/*为图表画个边框 */

ImageRectangle($graph, xtr(0),ytr(0),xtr($maxx),ytr($maxy),$i_grid);

/*为网格线创建一个点的类型*/
/* 该类型不被 PHP/FI2所支持 ???
$styleDotted[0] = $i_grid;
$styleDotted[1] = Transparent;
$styleDotted[2] = Transparent;
ImageSetStyle($graph, $styleDotted, 3);
*/

/* 画水平的网格线 */

ImageStringUp($graph, $small_font,8, ($small_font_width*strlen($y_title)/2.0) + ytr($maxy/2.0), $y_title, $i_grid);
ImageString($graph, $small_font, -($small_font_width*strlen($x_title)/2.0) + xtr($maxx/2.0) , ($YSIZE - 3.0*$small_font_height), $x_title, $i_grid);

$i = 0;
/* 画垂直的刻度 */
while ($i<=$num_vert_ticks){

$y_tmp = (DoubleVal($i)*$maxy/$num_vert_ticks);
SetType($y_tmp, "double");

ImageLine($graph,(-10+xtr(0)),ytr($y_tmp),xtr(1),ytr($y_tmp),$i_grid);

ImageLine($graph,(xtr($maxx)+10),ytr($y_tmp),xtr($maxx-1),ytr($y_tmp),$i_grid);

/* gdStyled 函数只被 GD v3 所支持*/
/*ImageLine($graph,xtr(0),ytr($y_tmp),xtr($maxx),ytr($y_tmp),gdStyled); */
ImageLine($graph,xtr(0),ytr($y_tmp),xtr($maxx),ytr($y_tmp),$i_light);

$ylab = sprintf( "%6.1f %s",$y_tick_delta*$i,$si_units[0]);

ImageString($graph, $small_font,($x_left_margin-54),( -($small_font_height/2.0) + ytr($y_tmp)),$ylab, $i_grid);
$i++;
}

/* 画垂直的网格线和水平的标签*/
$x = 0;
while ($x<$maxx) {
if ($x_label[$x]) {
ImageString($graph, $small_font,( -(strlen($x_label[$x]) * $small_font_width / 2.0) + xtr(0.5+$x)), ($YSIZE - $y_bot_margin + 1.5*$small_font_height) ,$x_label[$x], $i_grid);
}
if ($y_data[$x] ) { /* 画柱形 */
ImageFilledRectangle($graph, xtr(0.25+$x), ytr($y_data[$x]), xtr(0.75+$x), ytr(0), $i_major);
}
/* 以下是调试程序时的语句 */
/*
$tempmid = "mid";
$tempajo = $x;
ImageString($graph, $small_font, xtr($x), ytr(-1), $tempajo, $i_major);
ImageString($graph, $small_font, (-((strlen($tempmid))* $small_font_width /2.0) + xtr((.5+$x)) ), ytr(-1), $tempmid, $i_major);
*/
/* 调试结束 */
$x++;
}

ImageGif($graph);
ImageDestroy($graph);
/*
ImageDestroy($brush_out);
ImageDestroy($brush_outm);
*/
?>


Banner程序(佚名)

Banner程序

<?php
/* banner.php
这个PHP3的滚动程序是由 Anton Olsen ( aolsen@graphweb.com )设计的，你可以自由地修改和使用这个程序，并自由地传播它，如果你对它有了比较重要的修改，请你给作都写份E-Mail。

在这个程序中，作者试图通过多种不同的方法来实现这个功能，但PHP中的图像函数不能显示动画的GIF图片格式及对这种格式的操作（如：fopen, fpassthru, 和 fclose）。作者通过了passthru方法来加以实现，虽然这并不是一种最好的方法，但它可以比别的方法更加快速地显示广告条。

在这个程序中，我们假设：
1、你已经有了一个存放所有的广告图片的目录。
2、所有的广告图片都是GIF格式的。
3、所有的GIF图片都是以banner开头的。
3、在这个目录中没有其它的除了广告图片的文件。

安装这个程序：
1、把这个程序和所有的广告图片（*.GIF）放到一个目录中。
2、把以下这段HTML代码放在你的WEB页面中：
<a href="wherever.you.want.com">
<img src="http://www.yourserver.com/bannerdir/banner.phtml" alt="Random Banner Here" border=0>
</a>

4/14/2000    Mouse Chen( litmouse@km169.net   )    Translate
it to Chinese
*/

/* random( $max integer )
返回一个从 0到 $max-1的随机数；
*/
function random( $max )
{
$x = rand();
$y = getrandmax();

$r = $x / $y * ($max -1 );

$r = round( $r++ );
return $r;
}

/*读取目录，把所有的 “banner*”的文件读到一个数组中；*/
$i = 0;
$d   = dir( ".");
while($entry=$d->read())
if (substr($entry,0,6) ==  "banner")
$array[$i++] = $entry;
$d->close();

/* 选取一个随机数 */
$r = random( $i );

/* 发送一个 no-cache 和 gif 类型的文件头，并且输出图片。*/
Header(  "Pragma: no-cache" );
Header(  "Expires: Monday 01-Jan-80 12:00:00 GMT" );
Header(  "Content-type:  image/gif");
passthru(  "cat $array[$r]" );

?>


简单留言簿程序(佚名)

简单留言簿程序

<?
/*

annotate.php3

这是一个可以被放置在任何PHP3页面上的，允许用户留言的一个程序。
用户所加入的留言被存放成一个文件并被放置在当前目录下。

我写下这个程序序是因为我想用一个简单的方法来实现这个把用户的留
言加到我页面上的功能，而不用 mySQL数据库的支持。

当留言被加入时，空行会被转换成段落标识<P>。不会有其它的会被转换。
如果你不想要你的访问都输入含有HTML的留言，你可以取消已被注释的
"strip_tags" 这一行。

注意：你所放置该程序的目录要有可能的属性。这个可以通过Web Server设置。

把这个模块放置到你页面上的任何一个位置，你可以用以下的语句：

require("/some/full/path/annotate.php3");
或者是用一个相对路径的写法：
require($DOCUMENT_ROOT . "/relativepath/php3");

Steve Yelvington < steve@yelvington.com >

4/14/2000 Mouse Chen( litmouse@km169.net ) Translate to Chinese
*/

if ($message)
{
/*取消了下面两行的注释，就可使用户所输入HTML的标识失效 */
/* $name = strip_tags($name); */
/* $message = strip_tags($message); */
$message = ereg_replace( "\r\n\r\n", "\n<P>", $message);
$date = date( "l, F j Y, h:i a");
$message = "<B>$name </B> -- $date<P> $message <BR><HR>";
$fp = fopen (basename($PHP_SELF) . ".comment", "a");
fwrite ($fp, $message);
fclose ($fp);
}
@readfile(basename(($PHP_SELF . ".comment")));
?>
<FORM method="post">
<b>Your name:</b><BR><INPUT name="name" type="text" size="55"><BR>
<b>Your comment:</b><BR><TEXTAREA name="message" rows=10 cols=55 wrap=virtual>
</TEXTAREA><BR>
<INPUT name="submit" type="submit" value="Post your comments">
</FORM>


圆饼图程序(佚名)

圆饼图程序

<?
Header( "Content-Type:image/gif");
/////////////////////////////////////////////////////////////////////////////////////////
//
//   程序名：            Pollbiscuit
//
//    描  述：    这是一个很小的画贺饼图的程序
//
//    数  组： $Biscuit_val 包含了 Biscuit_values 的百分比。
//    数  组： $Biscuit_content 涉及了真正问题的答案。
//    测  试：
//    test_biscuit.php3:
//    <html><body>
//        <h1>Poll result!</h1>
//    $Biscuit_val[]=99.96;$Biscuit_content[]="I donn't know!";
//    $Biscuit_val[]=0.01; $Biscuit_content[]="I think so";
//    $Biscuit_val[]=0.01; $Biscuit_content[]="NO,just a joke";
//    $Biscuit_val[]=0.01; $Biscuit_content[]="Like it";
//    <Img src=PollBiscuit.php3?<script language="php"> for($i=0;$i<count($Biscuit_val);$i++) echo "Biscuit_val[$i]=$Biscuit_val[$i]"."&"."content[$i]=\
//    ".urlencode($Biscuit_content[$i])."&"; </script>  border=0    >
//    </body></html>
//    程序更改日志：
//     日期        作者姓名                    备注
//     ----------- -----------     ------------------------------------------------
//      4/14/2000    Mouse Chen( litmouse@km169.net
  )    Translate to Chinese
//      3/25/2000    Chriss lee( chriss.lee@sohu.com  )     Created

/////////////////////////////////////////////////////////////////////////////////////////

$num=count($Biscuit_val);

////////////////////////    作图区定义   /////////////////////////////////////////
$img_w=300;         //图片的宽
$img_h=130;         //图片的高
$bottom=10;         //矩形的下坐标
$left=120;         //矩形的左坐标

$a=100;         //椭圆的长轴
$b=50;         //椭圆的短轴

$distance=10;     //矩形间的距离

$id=ImageCreate($img_w,$img_h);     //创建画图区（画布）

/////////////////////////    颜色定义    /////////////////////////////////////////

$black=ImageColorAllocate($id,0,0,0);
$white=ImageColorAllocate($id,255,255,255);
$color[]=ImageColorAllocate($id,0,255,0);
$color[]=ImageColorAllocate($id,255,0,0);
$color[]=ImageColorAllocate($id,0,0,255);
$color[]=ImageColorAllocate($id,255,255,0);
$color[]=Imagecolorallocate($id,0,255,255);
$color[]=Imagecolorallocate($id,255,0,255);
$color[]=Imagecolorallocate($id,125,125,125);
$color[]=Imagecolorallocate($id,0,0,125);
$color[]=Imagecolorallocate($id,125,0,0);
$color[]=Imagecolorallocate($id,0,0,125);
$color[]=Imagecolorallocate($id,125,125,0);
$color[]=Imagecolorallocate($id,0,125,125);
$red=$color[1];
$green=$color[0];
$blue=$color[2];
$yellow=$color[3];

$trans=ImageColorTransparent($id,$white);     //透明的颜色定义

ImageFill($id,0,0,$white);             //填充透明的颜色

$img_center_x=50;                 //X坐标轴在图作图区的中央坐标
$img_center_y=$img_h/2;             //Y坐标轴在图作图区的中央坐标

//////////////////////////   画椭圆    //////////////////////////

ImageArc($id,$img_center_x,$img_center_y,$a,$b,0,360,$black);
ImageArc($id,$img_center_x,$img_center_y+$distance,$a,$b,0,180,$black);
imageline($id,$img_center_x,$img_center_y,$img_center_x+$a/2,$img_center_y,$black);

/////////////////////////    画线    ////////////////////////

Imageline($id,$img_center_x+$a/2,$img_center_y,$img_center_x+$a/2,$img_center_y+$distance,$black);
Imageline($id,$img_center_x-$a/2,$img_center_y,$img_center_x-$a/2,$img_center_y+$distance,$black);

////////////////////////   画圆饼    ////////////////////////////

$angle1=$angle2=0;             //角度angles

for ($i=0;$i<$num;$i++)
{
$angle2=$angle1;
$angle1+=$Biscuit_val[$i]*M_PI*2/100;     //计算角度

if ($i!=$num-1)
imageline($id,$img_center_x,$img_center_y,$img_center_x+$a*cos($angle1)/2,$img_center_y-$b*sin($angle1)/2,$black);

imagefill($id,$img_center_x+$a*cos(($angle1+$angle2)/2)/4,$img_center_y-$b*sin(($angle1+$angle2)/2)/4,$color[$i]);

if ($angle1>M_PI)
{
imageline($id,$img_center_x+$a*cos($angle1)/2,$img_center_y-$b*sin($angle1)/2,$img_center_x+$a*cos($angle1)/2,$img_center_y-$b*sin($angle1)/2+$distance,$black);
if ($angle2>=M_PI)
imagefill($id,$img_center_x+$a*cos(($angle1+$angle2)/2)/2,$img_center_y-$b*sin(($angle1+$angle2)/2)/2+$distance/2,$color[$i]);
else
imagefill($id,$img_center_x+$a*cos(($angle1+M_PI)/2)/2,$img_center_y-$b*sin(($angle1+M_PI)/2)/2+$distance/2,$color[$i]);

}

imagefilledrectangle($id,$left,$bottom-5,$left+10,$bottom,$color[$i]);
$string=sprintf( "%.2f",$Biscuit_val[$i]);
$string.= "%". " (".stripslashes($Biscuit_content[$i]). ")";
imagestring($id,2,$left,$bottom-2,$string,$black);

$bottom+=20;
}

ImageGif($id);
Imagedestroy($id);

?>


日期选择器(佚名)

日期选择器

<?php
/***************************************************************/
/*函数：DateSelector v1.1
                                  */
/*编码： PHP 3                                                 */
/*作者： Leon Atkinson < leon@clearink.com >                   */
/*创建三个表单字段，以用来先择 月份/日期/年份
        */
/*输入： 日期默认值以及输入的日期
                     */
/*输出： 被HTML所定义的三个日期字段

                 */
/***************************************************************/

function DateSelector($inName, $useDate=0)
{
/* 创建一个月份名的数组 */
$monthName = array(1=>
"January",  "February",  "March",
"April",
"May",  "June",  "July",
"August",
"September",
"October",  "November",  "December");

/* 如果数据非法或是没有被提供，就使用当前时间*/
if($useDate == 0)
{
$useDate = Time();
}

/* 创建月份选择器 */
echo
"<SELECT NAME=" . $inName .  "Month>\n";
for($currentMonth = 1; $currentMonth <= 12; $currentMonth++)
{
echo  "<OPTION VALUE=\"";
echo intval($currentMonth);
echo  "\"";
if(intval(date( "m", $useDate))==$currentMonth)
{
echo  " SELECTED";
}
echo  ">" . $monthName[$currentMonth] .  "\n";
}
echo  "</SELECT>";

/* 创建日期选择器*/
echo
"<SELECT NAME=" . $inName .  "Day>\n";
for($currentDay=1; $currentDay <= 31; $currentDay++)
{
echo  "<OPTION VALUE=\"$currentDay\"";
if(intval(date( "d", $useDate))==$currentDay)
{
echo  " SELECTED";
}
echo  ">$currentDay\n";
}
echo  "</SELECT>";

/* 创建处份选择器*/
echo  "<SELECT NAME=" . $inName .  "Year>\n";
$startYear = date( "Y", $useDate);
for($currentYear = $startYear - 5; $currentYear <= $startYear+5;$currentYear++)
{
echo  "<OPTION VALUE=\"$currentYear\"";
if(date( "Y", $useDate)==$currentYear)
{
echo  " SELECTED";
}
echo  ">$currentYear\n";
}
echo  "</SELECT>";

}
?>

<HTML>

<BODY>

<FORM>
Choose a Date:  <?php DateSelector( "Sample"); ?>
</FORM>

</BODY>

</HTML>


一个日历程序(佚名)

一个日历程序

<?
################
# Calendar.php - 创建一个当天日期为高亮度的日历GIF图片。
# 使用到了GD 函数库存和TTF字体 -可以被改变成 PNG格式的图片， 当然，如果
# 你想要的是一个拥有一个透明背景的图片除外，这个改动是可以被很容易得
# 完成，最后，我们把图片写到一个叫 dategif/ 的目录，并且用当天的日期来
# 命名该图片的名字。（如：20000204.gif）这个GIF图片一般情况只会有5K或
# 是7K的大小。
#
# 这段程序你可以以任意地方使用，该文档或支持对每个人都是免费的，但是请
# 不要把该程序用于买卖，你可以剪切、拷贝或是毁坏这段程序，只要你喜欢，
# 并且，你不用为了用它而给我付费！如果你需要帮助或是你真的很喜欢这段程
# 序，请给我来封信，以让我知道，你看好吗？
# 二月四日4， 2000 由 Matt Florell ( mattf@mail.com )
################

Header( "Content-type: image/gif");

#创建一幅图片
$im = ImageCreate(156, 142);
# 设置颜色
$black = ImageColorAllocate($im, 50, 50, 50);
$white = ImageColorAllocate($im, 255, 255, 255);
$orange = ImageColorAllocate($im, 255, 200, 0);
$yellow = ImageColorAllocate($im, 255, 255, 0);
$tan = ImageColorAllocate($im, 255, 255, 190);
$grey = ImageColorAllocate($im, 205, 205, 205);
$dkgrey = ImageColorAllocate($im, 140, 140, 140);

###灰线 ###
#边框线
 ImageRectangle($im, 1, 1, 155, 141, $dkgrey);
#水平线
 ImageRectangle($im, 1, 22, 155, 39, $dkgrey);
ImageRectangle($im, 1, 56, 155, 73, $dkgrey);
ImageRectangle($im, 1, 90, 155, 107, $dkgrey);
ImageRectangle($im, 1, 107, 155, 124, $dkgrey);
#垂直线
 ImageRectangle($im, 23, 22, 45, 141, $dkgrey);
ImageRectangle($im, 67, 22, 89, 141, $dkgrey);
ImageRectangle($im, 111, 22, 133, 141, $dkgrey);

### 白线 ###
#外框线
ImageRectangle($im, 0, 0, 154, 140, $white);
#水平线
 ImageRectangle($im, 0, 21, 154, 38, $white);
ImageRectangle($im, 0, 55, 154, 72, $white);
ImageRectangle($im, 0, 89, 154, 106, $white);
ImageRectangle($im, 0, 106, 154, 123, $white);
#垂直线
ImageRectangle($im, 22, 21, 44, 140, $white);
ImageRectangle($im, 66, 21, 88, 140, $white);
ImageRectangle($im, 110, 21, 132, 140, $white);

### 在上面写数字

$today = date( "d");
$month = date( "m");
$year = date( "Y");
$datecode = date( "Ymd");
$gif = '.gif';
$first=mktime(0,0,0,$month,1,$year);

$mon_yr=date( "F Y", $first);

$wd=date( "w",$first);
#if ($wd==0) { $wd=7;}
$lastday=date( "d",mktime(0,0,0,$month+1,0,$year));
$cur=-$wd+0;
$ver_position = 50;
for ($k=0;$k<6;$k++) {
$day_position = 5;
$last_row_used = 0;
for ($i=0;$i<7;$i++ ) {
$cur++;
$sing_add = 0;
if (($cur<=0) || ($cur>$lastday) ) $day_position = ($day_position + 22);
else
{
$day_color = $grey;
if ($day_position<10) $day_color = $tan;
if ($cur==$today) $day_color = $yellow;

if (strlen($cur)<2) {$sing_add = 4;}
$fin_position = ($day_position + $sing_add);

ImageTTFText($im, 12, 0, $fin_position, $ver_position, $day_color, "./fonts/arialbd.ttf", "$cur");

$day_position = ($day_position + 22);
$last_row_used = 1;
}
}
$day_position = 5;
if ($last_row_used) $ver_position = ($ver_position + 17);
}
# 月份和年份 （Arial字体、加粗、居中）
$spc = 23;
$st_add = 0;
$st = "$mon_yr";
$st_len = strlen($st);
$st_margin = (14 - $st_len);
if ($st_margin > 0) {$st_add = ($st_margin * 4);}
$spc = ($spc + $st_add);
ImageTTFText($im, 14, 0, $spc, 15, $white, "./fonts/arialbd.ttf", "$st");

# 星期的名字
ImageString($im, 2, 3, 23, "Sun", $orange);
ImageString($im, 2, 25, 23, "Mon", $orange);
ImageString($im, 2, 47, 23, "Tue", $orange);
ImageString($im, 2, 69, 23, "Wed", $orange);
ImageString($im, 2, 91, 23, "Thu", $orange);
ImageString($im, 2, 113, 23, "Fri", $orange);
ImageString($im, 2, 135, 23, "Sat", $orange);

if ($ver_position<140)
{
$im_out = ImageCreate(156, 125);
$out_black = ImageColorAllocate($im_out, 50, 50, 50);
ImageRectangle($im, 1, 124, 155, 124, $dkgrey);
ImageCopyResized($im_out, $im, 0, 0, 0, 0, 156, 125, 156, 125);
ImageColorTransparent($im_out, $out_black);
ImageGIF($im_out, "./dategif/$datecode$gif");
ImageGIF($im_out);
ImageDestroy($im);
ImageDestroy($im_out);
}
else
{
ImageColorTransparent($im, $black);
ImageGif($im, "./dategif/$datecode$gif");
ImageGif($im);
ImageDestroy($im);
}

?>


一个画饼图程序(佚名)

一个画饼图程序

<?

function roundoff ($v) {
if ( $v - floor($v) >= 0.5) {
return(ceil($v));
} else {
return(floor($v));
}
}

function get_xy_factors ($degrees) {
$x = cos((3.1415926* $degrees) / doubleval(180));
$y = sin((3.1415926* $degrees) / doubleval(180));
return (array($x, $y));
}

function draw_pie($id,$rx,$ry,$r,$from,$to,$color) {

ImageArc($id, $rx, $ry, $r, $r, $from, $to, $color);

$axy2 = get_xy_factors($from);
$ax2 = floor($rx + ($axy2[0] * $r / 2));
$ay2 = floor($ry + ($axy2[1] * $r / 2));
ImageLine($id, $rx, $ry, $ax2, $ay2, $color);

$bxy2 = get_xy_factors($to);
$bx2 = ceil($rx + ($bxy2[0] * $r / 2));
$by2 = ceil($ry + ($bxy2[1] * $r / 2));
ImageLine($id, $rx, $ry, $bx2, $by2, $color);

$xy2 = get_xy_factors((($to - $from) / 2) + $from);
$x2 = floor($rx + ($xy2[0] * $r /3));
$y2 = floor($ry + ($xy2[1] * $r /3));
ImageFilltoborder($id, $x2, $y2, $color, $color);
}

function draw_legends($id,$lex,$ley,$ler,$les,$color,$balack) {

ImageFilledRectangle($id, $lex, $ley, $lex+$ler, $ley+$ler, $color);
ImageRectangle($id, $lex, $ley, $lex+$ler, $ley+$ler,$balack);
ImageString($id, 3, $lex+$ler+5, $ley, $les, $color);

}

function display($a,$num) {

$id = imagecreate(600,400);

$angle=30;

$rx=120;
$ry=130;

$r=120;

$color = ImageColorAllocate($id, 255, 255, 255);
$balack = ImageColorAllocate($id, 0, 0, 0);

/* */
$colors=array(ImageColorAllocate($id, 255, 0, 0),
ImageColorAllocate($id, 0, 255, 0),
ImageColorAllocate($id, 0, 0, 255),
ImageColorAllocate($id, 0, 255, 255),
ImageColorAllocate($id, 255, 0, 255));

$les=array( "choice 1", "choice 2", "choice 3", "choice 4", "choice 5");
/* */

$lex=210;
$ley=50;
$ler=13;

$sum=0;
for($i=0;$i<$num;$i++)
$sum=$sum+$a[$i];

$from=$angle;
$to=$from+roundoff(360*$a[0]/$sum);

Imagerectangle($id, 0, 0, 440, 240, $colors[0]);
ImageString($id, 5, 180, 10, "my test", $colors[0]);

for($i=0;$i<$num;$i++) {
$les[$i] .= sprintf( " <%s",$a[$i]);
$les[$i] .= sprintf( " (%.2f%%)", ($a[$i] * 100 / doubleval($sum)));
draw_legends($id,$lex,$ley,$ler,$les[$i],$colors[$i],$balack);
$ley=$ley+20;
}

for($i=0;$i<$num;$i++) {
draw_pie($id,$rx,$ry,$r,$from,$to,$colors[$i]);
$from=$to+1;
$to=$from+roundoff(360*$a[$i+1]/$sum);
}

$tot= "TOTAL:";
$tot .= sprintf( " %s", $sum);
ImageString($id, 5, 210, 200, $tot, $colors[0]);

Imagegif($id);
ImageDestroy($id);
}

Header( "Content-type: image/gif");

$a[0]=15;
$a[1]=6;
$a[2]=8;
$a[3]=11;
$a[4]=9;

$num=5;

display($a,$num);

?>


简单BBS程序（需MySQL支持）(佚名)

简单BBS程序（需MySQL支持）

<HTML>
<HEAD>
<TITLE>This is my BBS</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<?
/******************************************************
BBS v1.0
编码： PHP 3
作者： Leon Atkinson < leon.atkinson@clearink.com >

简单 BBS 系统 需 MySQL。
以下是BBS的表结构，用以下的语句就可以建立：

CREATE TABLE bbsMessage
(
ID INT NOT NULL AUTO_INCREMENT,
Title VARCHAR(64),
Poster VARCHAR(64),
Created DATETIME,
Parent INT,
Body BLOB,
PRIMARY KEY(ID)
);

*******************************************************/

printf( "<H1>Leon's BBS</H1>\n");

/* 设置数据库 */
mysql_pconnect( "www.yoursever.com", "httpd");
$Database = "yourdb";

/****************************************************************
一个吐出派生信息的递归函数
****************************************************************/
function showMessages($parentID)
{
global $Database;

$dateToUse = Date( "U");

echo "<UL>\n";

/* 显示所有的类别 */
$Query = "SELECT * FROM bbsMessage ";
$Query = $Query . "WHERE Parent=$parentID ";
$Query = $Query . "ORDER BY Created ";

$result = mysql($Database,$Query);
$numRows = mysql_NumRows($result);
$RowCount = 0;
while($RowCount < $numRows)
{
$messageID = mysql_result($result,$RowCount, "ID");
$messageTitle = mysql_result($result,$RowCount, "Title");
$messageCreated = mysql_result($result,$RowCount, "Created");
$messageParent = mysql_result($result,$RowCount, "Parent");

/*显示一行是什么类别的信息 */
printf( "<LI>($messageCreated) <A HREF=\"bbs.htma?messageID=$messageID\">$messageTitle</A><BR>\n");

/* 调用 getWingContents 以得到它的分支 */
showMessages($messageID);

$RowCount++;
}

echo "</UL>\n";
}

/****************************************************************
输出一个提交新信息的表单，并在其中预置一个父ID
****************************************************************/
function postForm($parentID, $useTitle)
{
printf( "<FORM ACTION=\"bbs.htma\" METHOD=\"post\">\n");
printf( "<INPUT TYPE=\"hidden\" NAME=\"inputParent\" VALUE=\"$parentID\">");
printf( "<INPUT TYPE=\"hidden\" NAME=\"ACTION\" VALUE=\"POST\">");
printf( "<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"5\" WIDTH=\"400\">\n");
printf( "<TR><TD WIDTH=\"100\"><B>Title</B></TD>");
printf( "<TD WIDTH=\"300\"><INPUT TYPE=\"text\" NAME=\"inputTitle\" SIZE=\"35\" MAXLENGTH\"64\" VALUE=\"$useTitle\"></TD></TR>\n");
printf( "<TR><TD WIDTH=\"100\"><B>Poster</B></TD>");
printf( "<TD WIDTH=\"300\"><INPUT TYPE=\"text\" NAME=\"inputPoster\" SIZE=\"35\" MAXLENGTH\"64\"></TD></TR>\n");
printf( "<TR><TD COLSPAN=\"2\" WIDTH=\"400\">");
printf( "<TEXTAREA NAME=\"inputBody\" COLS=\"45\" ROWS=\"5\"></TEXTAREA></TD></TR>\n");
printf( "<TR><TD COLSPAN=\"2\" WIDTH=\"400\"><CENTER><INPUT TYPE=\"submit\" VALUE=\"Post\"></CENTER></TD></TR>\n");
printf( "</TABLE>\n");
printf( "</FORM>\n");

}

/******************************************************
执行动作
******************************************************/
if($ACTION != "")
{
if($ACTION == "POST")
{
$inputTitle = ereg_replace( "'", "''", $inputTitle);
$inputBody = ereg_replace( "'", "''", $inputBody);

$Query = "INSERT INTO bbsMessage ";
$Query .= "VALUES(0, '$inputTitle', ";
$Query .= "'$inputPoster', ";
$Query .= "now(), $inputParent, ";
$Query .= "'$inputBody')";

$result = mysql($Database,$Query);

}

}

/******************************************************
显示信息或者是显示信息列表
******************************************************/
if($messageID > 0)
{
$Query = "SELECT * FROM bbsMessage ";
$Query = $Query . "WHERE ID=$messageID ";

$result = mysql($Database,$Query);
$numRows = mysql_NumRows($result);
$RowCount = 0;
if($RowCount < $numRows)
{
$messageID = mysql_result($result,$RowCount, "ID");
$messageTitle = mysql_result($result,$RowCount, "Title");
$messagePoster = mysql_result($result,$RowCount, "Poster");
$messageCreated = mysql_result($result,$RowCount, "Created");
$messageParent = mysql_result($result,$RowCount, "Parent");
$messageBody = mysql_result($result,$RowCount, "Body");

printf( "<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"5\" WIDTH=\"400\">\n");
printf( "<TR><TD WIDTH=\"100\"><B>Title</B></TD><TD WIDTH=\"300\">$messageTitle</TD></TR>\n");
printf( "<TR><TD WIDTH=\"100\"><B>Poster</B></TD><TD WIDTH=\"300\">$messagePoster</TD></TR>\n");
printf( "<TR><TD WIDTH=\"100\"><B>Posted</B></TD><TD WIDTH=\"300\">$messageCreated</TD></TR>\n");
printf( "<TR><TD COLSPAN=\"2\" WIDTH=\"400\">$messageBody</TD></TR>\n");
printf( "</TABLE>\n");

postForm($messageID, "RE: $messageTitle");

}

echo "<A HREF=\"bbs.htma\">List of Messages</A><BR>";

}
else
{
printf( "<H2>List of Messages</H2>\n");

/* 调用递归函数*/
showMessages(0);

postForm(0, "");

}

?>

</BODY>
</HTML>


邮件发送程序(佚名)

邮件发送程序

<?php
/*******************************************************************************
程序名：            Email
描述：    这个程序是用来作发送电子邮件用途的

可被用发送的邮件可以是：一般文本，含HTML标识的文本，或两都是，以及邮件附件或邮件模板。

测试：
test_email.php3:

$mail->setTo("myEmail@yo.com");
$mail->send();

更改日志:
时间         姓名            备注
----------- -----------     ------------------------------------------------
10/21/1999    R.Chambers        创建
*******************************************************************************/
/*******************************************************************************
试用报告:
没有出错报告
可以发送带HTML标识的文本
可以发送有附件的并HTML标识的文本
*******************************************************************************/
/*******************************************************************************
函数列表:
setTo($inAddress)
setCC($inAddress)
setBCC($inAddress)
setFrom($inAddress)
setSubject($inSubject)
setText($inText)
setHTML($inHTML)
setAttachments($inAttachments)
checkEmail($inAddress)
loadTemplate($inFileLocation,$inHash,$inFormat)
getRandomBoundary($offset)
getContentType()
formatTextHeader()
formatHTMLHeader()
formatAttachmentHeader($inFileLocation)
send()
*******************************************************************************/

class Email
{
//---全局变量
var $mailTo                =  "";                         // 邮件目的地址数组
var $mailCC                =  "";                         // 抄送人地址
var $mailBCC            =  "";                         // 暗送人地址
var $mailFrom            =  "";                         // 发送人地址
var $mailSubject        =  "";                         // 邮件主题
var $mailText            =  "";                         // 纯文本信息
var $mailHTML            =  "";                         // html 文本信息
var $mailAttachments    =  "";                         // 附件数组

/*******************************************************************************
函数：        setTo($inAddress)
描述：    设置电子邮件地址
参数：        $inAddress 是 string
类型
按逗号把各个邮件地址分离出来
返回值：        如果成功则返回true
*******************************************************************************/
function setTo($inAddress){
//--把逗号做分隔符分离邮件地址
$addressArray = explode( ",",$inAddress);
//--检查每一个邮件地址，如果没有错误就退出。
for($i=0;$i<count($addressArray);$i++){
if($this->checkEmail($addressArray[$i])==false) return false;
}
//--如果所有的邮件地址都正确，那么调用implode把邮件地址恢复
$this->mailTo = implode($addressArray, ",");
return true;
}
/*******************************************************************************
函数：        setCC($inAddress)
描述：设置邮件的抄送地址
参数：        $inAddress 是String型
按逗号把各个邮件地址分离出来
返回值：        如果成功则返回true
*******************************************************************************/
function setCC($inAddress){

$addressArray = explode( ",",$inAddress);

for($i=0;$i<count($addressArray);$i++){
if($this->checkEmail($addressArray[$i])==false) return false;
}

$this->mailCC = implode($addressArray, ",");
return true;
}
/*******************************************************************************
函数：        setBCC($inAddress)
描述：    设置暗送邮件地址
参数：        $inAddress 是String型
按逗号把各个邮件地址分离出来
返回值：        如果成功则返回true
*******************************************************************************/
function setBCC($inAddress){

$addressArray = explode( ",",$inAddress);

for($i=0;$i<count($addressArray);$i++){
if($this->checkEmail($addressArray[$i])==false) return false;
}

$this->mailBCC = implode($addressArray, ",");
return true;
}
/*******************************************************************************
函数：        setFrom($inAddress)
描述：    设置邮件发送人地址
参数：        $inAddress 是
string 型 (只有一个邮件地址)
返回值：如果成功则返回true
*******************************************************************************/
function setFrom($inAddress){
if($this->checkEmail($inAddress)){
$this->mailFrom = $inAddress;
return true;
}
return false;
}
/*******************************************************************************
函数：        setSubject($inSubject)
描述：    设置邮件主题
参数：$inSubject 是 string 类型
返回值：如果成功则返回true
*******************************************************************************/
function setSubject($inSubject){
if(strlen(trim($inSubject)) > 0){
$this->mailSubject = ereg_replace( "\n", "",$inSubject);
return true;
}
return false;
}
/*******************************************************************************
函数：        setText($inText)
描述：设置邮件纯文本内容
参数：        $inText 是 string
类型
返回值：如果成功则返回true
*******************************************************************************/
function setText($inText){
if(strlen(trim($inText)) > 0){
$this->mailText = $inText;
return true;
}
return false;
}
/*******************************************************************************
函数：        setHTML($inHTML)
描述：设置邮件HTML文本内容
参数：        $inHTML 是 string
类型
返回值：如果成功则返回true
*******************************************************************************/
function setHTML($inHTML){
if(strlen(trim($inHTML)) > 0){
$this->mailHTML = $inHTML;
return true;
}
return false;
}
/*******************************************************************************
函数：        setAttachments($inAttachments)
描述：    存贮附件字符串
参数：        $inAttachments 是一个包含了目录信息的String类型
以逗号为分隔符
返回值：如果成功则返回true
*******************************************************************************/
function setAttachments($inAttachments){
if(strlen(trim($inAttachments)) > 0){
$this->mailAttachments = $inAttachments;
return true;
}
return false;
}
/*******************************************************************************
函数：        checkEmail($inAddress)
描述：检查邮件地址是法合法
参数：$inAddress 是 string 类型
返回值：如果合法则返回true
*******************************************************************************/
function checkEmail($inAddress){
return (ereg(
"^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$",$inAddress));
}
/*******************************************************************************
函数：        loadTemplate($inFileLocation,$inHash,$inFormat)
描述：    读取一个模板文件并替换一些宏定义的值
参数：$inFileLocation 是 string 类型，记录目录信息
$inHash 是 Hash 类型，是要被替代的值
$inFormat 是 string 类型，可以是 "text" 或 "html"
返回值：如果被load则返回true
*******************************************************************************/
function loadTemplate($inFileLocation,$inHash,$inFormat){
/*
模板文件应该有像下面那样的样子：
Dear ~!UserName~,
Your address is ~!UserAddress~
*/
//--指定模板的一些符号
$templateDelim =  "~";
$templateNameStart =  "!";
//--设置外部字串
$templateLineOut =  "";
//--打开模板文件
if($templateFile = fopen($inFileLocation, "r")){
//--循环分析文件，一行一行的分析
while(!feof($templateFile)){

$templateLine = fgets($templateFile,1000);
//--分开文件的每一行，并把其存于数组中，并且规范其语句
$templateLineArray = explode($templateDelim,$templateLine);

for( $i=0; $i<count($templateLineArray);$i++){
//--从0的位置开始寻找 $templateNameStart
if(strcspn($templateLineArray[$i],$templateNameStart)==0){
//--在 $templateNameStart 之后得到宏定义的名字
$hashName = substr($templateLineArray[$i],1);
//--替代宏定义的名字
$templateLineArray[$i] = ereg_replace($hashName,(string)$inHash[$hashName],$hashName);
}
}
//--输出字串数全，并把它加入到外部数组中
$templateLineOut .= implode($templateLineArray, "");
}
//--关闭文件
fclose($templateFile);
//--按固定的格式设置邮件内容
if( strtoupper($inFormat)== "TEXT" ) return($this->setText($templateLineOut));
else if( strtoupper($inFormat)== "HTML" ) return($this->setHTML($templateLineOut));
}
return false;
}
/*******************************************************************************
函数：getRandomBoundary($offset)
描述：返回一个边界随机值
参数：        $offset 是 integer 类型
返回：字符串
*******************************************************************************/
function getRandomBoundary($offset = 0){
srand(time()+$offset);
return ( "----".(md5(rand())));
}
/*******************************************************************************
函数：getContentType($inFileName)
描述：为文件种类返回一个 内容的种类
参数：$inFileName 是一个 string 类型，记录文件名(可以含路径)
返回：字串
*******************************************************************************/
function getContentType($inFileName){
//--剥去路径
$inFileName = basename($inFileName);
//--检查文件扩展名
if(strrchr($inFileName, ".") == false){
return  "application/octet-stream";
}
//--得到文件扩展名，并判断文件类型
$extension = strrchr($inFileName, ".");
switch($extension){
case  ".gif":    return  "image/gif";
case  ".gz":        return  "application/x-gzip";
case  ".htm":    return  "text/html";
case  ".html":    return  "text/html";
case  ".jpg":    return  "image/jpeg";
case  ".tar":    return  "application/x-tar";
case  ".txt":    return  "text/plain";
case  ".zip":    return  "application/zip";
default:        return  "application/octet-stream";
}
return  "application/octet-stream";
}
/*******************************************************************************
函数：        formatTextHeader
描述：    为文本返回一个格式化过的头信息
参数：        没有
返回：        字串
*******************************************************************************/
function formatTextHeader(){
$outTextHeader =  "";
$outTextHeader .=  "Content-Type: text/plain; charset=us-ascii\n";
$outTextHeader .=  "Content-Transfer-Encoding: 7bit\n\n";
$outTextHeader .= $this->mailText. "\n";
return $outTextHeader;
}
/*******************************************************************************
函数：        formatHTMLHeader
描述：    返回一个HTML的头信息
参数：        没有
返回：        字串
*******************************************************************************/
function formatHTMLHeader(){
$outHTMLHeader =  "";
$outHTMLHeader .=  "Content-Type: text/html; charset=us-ascii\n";
$outHTMLHeader .=  "Content-Transfer-Encoding: 7bit\n\n";
$outHTMLHeader .= $this->mailHTML. "\n";
return $outHTMLHeader;
}
/*******************************************************************************
函数：        formatAttachmentHeader($inFileLocation)
描述：    返回一个附件的头信息
参数：        $inFileLocation 是相关目录的String型变量
返回：        字串
*******************************************************************************/
function formatAttachmentHeader($inFileLocation){
$outAttachmentHeader =  "";
//--通过文件夹的扩展名得到 content-type
$contentType = $this->getContentType($inFileLocation);
//--如果是TEXT的类型，那么就用标准的7bit编码
if(ereg( "text",$contentType)){
//--格式化信息头
$outAttachmentHeader .=  "Content-Type: ".$contentType. ";\n";
$outAttachmentHeader .=  ' name="'.basename($inFileLocation). '"'. "\n";
$outAttachmentHeader .=  "Content-Transfer-Encoding: 7bit\n";
$outAttachmentHeader .=  "Content-Disposition: attachment;\n";     //--other: inline
$outAttachmentHeader .=  ' filename="'.basename($inFileLocation). '"'. "\n\n";
$textFile = fopen($inFileLocation, "r");
//--一行一行地检查文件
while(!feof($textFile)){
$outAttachmentHeader .= fgets($textFile,1000);
}
//--关闭文件
fclose($textFile);
$outAttachmentHeader .=  "\n";
}
//--非TEXT类型用 64-bit 编码
else{
//--格式头信息
$outAttachmentHeader .=  "Content-Type: ".$contentType. ";\n";
$outAttachmentHeader .=  ' name="'.basename($inFileLocation). '"'. "\n";
$outAttachmentHeader .=  "Content-Transfer-Encoding: base64\n";
$outAttachmentHeader .=  "Content-Disposition: attachment;\n";     //--other: inline
$outAttachmentHeader .=  ' filename="'.basename($inFileLocation). '"'. "\n\n";
//--调用 uuencode 命令
exec( "uuencode -m $inFileLocation nothing_out",$returnArray);
//--加入每一行的返回值
for ($i = 1; $i<(count($returnArray)); $i++){
$outAttachmentHeader .= $returnArray[$i]. "\n";
}
}
return $outAttachmentHeader;
}
/*******************************************************************************
函数：        send()
描述：    发送邮件
参数：        没有
返回：        发送成功返回真
*******************************************************************************/
function send(){
//--把邮件头设为空
$mailHeader =  "";
//--加入抄送地址
if($this->mailCC !=  "") $mailHeader .=  "CC: ".$this->mailCC.
"\n";
//--加入暗送地址
if($this->mailBCC !=  "") $mailHeader .=  "BCC: ".$this->mailBCC.
"\n";
//--加入发送人地址
if($this->mailFrom !=  "") $mailHeader .=  "FROM: ".$this->mailFrom.
"\n";

//---------------------------信息类型-------------------------------
//--TEXT文本
if($this->mailText !=  "" && $this->mailHTML ==  "" && $this->mailAttachments ==  ""){
return mail($this->mailTo,$this->mailSubject,$this->mailText,$mailHeader);
}
//--HTML 和 TEXT
else if($this->mailText !=  "" && $this->mailHTML !=  "" && $this->mailAttachments ==  ""){
//--得到一个随机边界
$bodyBoundary = $this->getRandomBoundary();
//--格式化头信息
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
//--设置 MIME 版本
$mailHeader .=  "MIME-Version: 1.0\n";

$mailHeader .=  "Content-Type: multipart/alternative;\n";
$mailHeader .=  ' boundary="'.$bodyBoundary. '"';
$mailHeader .=  "\n\n\n";
//--加入信体和边界
$mailHeader .=  "--".$bodyBoundary.
"\n";
$mailHeader .= $textHeader;
$mailHeader .=  "--".$bodyBoundary.
"\n";
//--加入HTML和结束边界
$mailHeader .= $htmlHeader;
$mailHeader .=  "\n--".$bodyBoundary.
"--";
//--发送信息
return mail($this->mailTo,$this->mailSubject, "",$mailHeader);
}
//--HTML 和 TEXT 和 附件
else if($this->mailText !=  "" && $this->mailHTML !=  "" && $this->mailAttachments !=  ""){

$attachmentBoundary = $this->getRandomBoundary();
//--为所有的部分和边界设置信息头
$mailHeader .=  "Content-Type: multipart/mixed;\n";
$mailHeader .=  ' boundary="'.$attachmentBoundary. '"'. "\n\n";
$mailHeader .=  "This is a multi-part message in MIME format.\n";
$mailHeader .=  "--".$attachmentBoundary. "\n";

//--TEXT 和 HTML--
$bodyBoundary = $this->getRandomBoundary(1);
//--格式化头信息
$textHeader = $this->formatTextHeader();
$htmlHeader = $this->formatHTMLHeader();
//--设置 MIME 版本
$mailHeader .=  "MIME-Version: 1.0\n";
//--为所有的部分和边界设置信息头
$mailHeader .=  "Content-Type: multipart/alternative;\n";
$mailHeader .=  ' boundary="'.$bodyBoundary. '"';
$mailHeader .=  "\n\n\n";
//--加入信体和边界
$mailHeader .=  "--".$bodyBoundary.
"\n";
$mailHeader .= $textHeader;
$mailHeader .=  "--".$bodyBoundary.
"\n";
//--加入 html 和 结尾边界
$mailHeader .= $htmlHeader;
$mailHeader .=  "\n--".$bodyBoundary.
"--";

//--得到附件文件名数组
$attachmentArray = explode( ",",$this->mailAttachments);
//--检索第一个附件
for($i=0;$i<count($attachmentArray);$i++){
//--附件分隔标志
$mailHeader .=  "\n--".$attachmentBoundary. "\n";
//--得到附件信息
$mailHeader .= $this->formatAttachmentHeader($attachmentArray[$i]);
}
$mailHeader .=  "--".$attachmentBoundary. "--";
return mail($this->mailTo,$this->mailSubject, "",$mailHeader);
}
return false;
}
}
?>


动态按钮程序(佚名)

动态按钮程序

<?php

/**************************************************************
* 动态按钮                                         *
* http://justice.loyola.edu/~rcapelli/dynamic_button/          *
*                                                            *
* 作者： Rob Capellini                                      *
* 最后更改日期： 1999年3月22日                          *
* 注意：以下这段程序中有很大一部的代码是来源于其它人的程序，我
*
    只不过把它们组合起来了，为此，我不能也不会为了下面的程序
*
    而取得值得荣誉的感觉。我只是加入了一些功能性的东西。
*
*比如：
*
* http://www.phpbuilder.com/columns/rasmus19990124.php3
* http://webdev.berber.co.il/get_example.php3?count=402
*
* 这个程序是通过了GD Library创建了具有动态性的按钮，就像IE上的一样，
*在这个程序中，你可以改变按钮的大小、文字、字体、字体大小
**************************************************************/

/* "gd.so" 是 GD library 文件，在 GNU\Linux
中必须的文件 */
/* 提示：如果是在Windows下，该文件应该是——PHP_GD.DLL */

dl( "gd.so");

/* 我们还需要 Radloff Claus' 的colors.php 文件 */
require( "colors.php");

/*设置一些初始化变量 */
$BaseFontDir =  "../ttf/";
$Fontname   =   "TIMES";
$sz = 11;
$fgcolor =  "white";
$bgcolor =  "blue";
$xpad=9;
$ypad=9;
$text= "This text is the default text.";

/*从 URL中得传来的参数 */
$query_string  =  getenv(   "QUERY_STRING");

/* 以&为界限折分参数 */
$env_array  =  split(
"&",  $query_string);

/*  把参数名和值拆分出来，并把值转成  %XX 形式   */
while  (list($key,  $val)  =  each($env_array)) {
list($name,  $wert)  =  split(
"=",  $val);
$name  =  urldecode($name);
$wert  =  urldecode($wert);

// 写入 $cgivars
$CGIVars[$name]  =  $wert;
}

/* 检查一下用户设定了那些值？ */
if ($CGIVars[ "text"])
$text = $CGIVars[ "text"];

if ($CGIVars[ "sz"])
$sz = $CGIVars[ "sz"];

if ($CGIVars[ "font"])
$Fontname  =  $CGIVars[ "font"];
$Font_File = $BaseFontDir . $Fontname .  ".TTF";

if ($CGIVars[ "xpad"])
$xpad = $CGIVars[ "xpad"];

if ($CGIVars[ "ypad"])
$ypad = $CGIVars[ "ypad"];
if ($CGIVars[ "fgcolor"])
$fgcolor = $CGIVars[ "fgcolor"];
$fg = GetColor($fgcolor);

if ($CGIVars[ "bgcolor"])
$bgcolor = $CGIVars[ "bgcolor"];
$bg = GetColor($bgcolor);

/* 输出文件头类型 */
Header(  "Content-type: image/gif");

/* 得到所选字体的大小 */
$size = imagettfbbox($sz,0, $Font_File,$text);

/* 得到文字的高和宽*/
$dx = abs($size[2]-$size[0]);
$dy = abs($size[5]-$size[3]);

/* 初始化一幅图片 */
$im = imagecreate($dx+$xpad,$dy+$ypad);
$background = ImageColorAllocate($im, $bg[ "red"], $bg[
"green"], $bg[ "blue"]);
$foreground = ImageColorAllocate($im, $fg[ "red"], $fg[
"green"], $fg[ "blue"]);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);

/* 开始创建图片 */
ImageRectangle($im,0,0,$dx+$xpad-1,$dy+$ypad-1,$black);
ImageRectangle($im,0,0,$dx+$xpad,$dy+$ypad, $white);
ImageTTFText($im, $sz, 0, (int)($xpad/2)+1, $dy+(int)($ypad/2), $black, $Font_File, $text);
ImageTTFText($im, $sz, 0, (int)($xpad/2), $dy+(int)($ypad/2)-1, $foreground, $Font_File, $text);

/* 把图片发送给客户端 */
ImageGif($im);

/* 创建了图片变量，当然要释放内存了 */
ImageDestroy($im);
?>


POP3、SMTP邮件收发程序(佚名)

POP3、SMTP邮件收发程序

<?php
if ($EMAIL_INC) return;
$EMAIL_INC= "defined";
define( "SmtpPort",25);

class Pop3 {
var $subject; // 邮件主题
var $from_email; // 发件人地址
var $from_name; // 发件人姓名
var $to_email; // 收件人地址
var $to_name; // 收件人姓名
var $body; // 邮件内容
var $filename; // 文件名
var $socket; // 当前的 socket
var $Line;
var $Status;

function pop3_open($server, $port)
{

$this->Socket = fsockopen($server, $port);
if ($this->Socket <= 0){
return false;
}
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return false;
return true;
}

function pop3_user($user)
{

if ($this->Socket < 0){
return false;
}
fputs($this->Socket, "USER $this->user\r\n");
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return false;

return true;
}

function pop3_pass( $pass)
{

fputs($this->Socket, "PASS $pass\r\n");
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return 0;

return 1;
}

function pop3_stat()
{

fputs($this->Socket, "STAT\r\n");
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return 0;

if (!eregi( "+OK (.*) (.*)", $this->Line, $regs))
return 0;

return $regs[1];
}

function pop3_list()
{
fputs($this->Socket, "LIST\r\n");
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return 0;

$i = 0;
while (substr($this->Line = fgets($this->Socket, 1024), 0, 1) <> ".")
{
$articles[$i] = $this->Line;
$i++;
}
$articles[ "count"] = $i;

return $articles;
}

function pop3_retr($nr)
{

fputs($this->Socket, "RETR $nr\r\n");
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return 0;

while (substr($this->Line = fgets($this->Socket, 1024), 0, 1) <> ".")
{
$data[$i] = $this->Line;
$i++;
}
$data[ "count"] = $i;

return $data;
}

function pop3_dele( $nr)
{

fputs($this->Socket, "DELE $nr\r\n");
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return 0;
return 1;
}

function pop3_quit()
{

fputs($this->Socket, "QUIT\r\n");
$this->Line = fgets($this->Socket, 1024);
$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "+") return 0;

return 1;
}
}

class Smtp {

var $Subject; // string the email's subject
var $FromName; // string sender's name (opt)
var $ToName; // string recipient's name (opt)
var $Body; // string body copy
var $Attachment; // attachment (optional)
var $AttachmentType;
var $Socket;
var $Line;
var $Status;

function Smtp($Server = "localhost",$Port = SmtpPort)
{
return $this->Open($Server, $Port);
}

function SmtpMail($FromEmail, $FromName, $ToEmail, $ToName, $Subject, $Body, $Attachment=null, $AttachmentType= "TEXT")
{
$this->Subject = $Subject;
$this->ToName = $ToName;

$this->FromName = $FromName;
$this->Body = $Body;

$this->Attachment = $Attachment;
$this->AttachmentType = $AttachmentType;

if ($this->Helo() == false){
return false;
}
if ($this->MailFrom($FromEmail) == false){
return false;
}
if ($this->RcptTo($ToEmail) == false){
return false;
}
if ($this->Body() == false){
return false;
}
if ($this->Quit() == false){
return false;
}
}

function Open($Server, $Port)
{

$this->Socket = fsockopen($Server, $Port);
if ($this->Socket < 0) return false;

$this->Line = fgets($this->Socket, 1024);

$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "2") return false;

return true;
}

function Helo()
{
if (fputs($this->Socket, "helo\r\n") < 0 ){
return false;
}
$this->Line = fgets($this->Socket, 1024);

$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "2") return false;

return true;
}

function Ehlo()
{

/* Well, let's use "helo" for now.. Until we need the
extra func's [Unk]
*/
if(fputs($this->Socket, "helo localhost\r\n")<0){
return false;
}
$this->Line = fgets($this->Socket, 1024);

$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "2") return false;

return true;
}

function MailFrom($FromEmail)
{

if (fputs($this->Socket, "MAIL FROM: <$FromEmail>\r\n")<0){
return false;
}

$this->Line = fgets($this->Socket, 1024);

$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "2") return false;

return true;
}

function RcptTo($ToEmail)
{

if(fputs($this->Socket, "RCPT TO: <$ToEmail>\r\n")<0){
return false;
}
$this->Line = fgets($this->Socket, 1024);

$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "2") return false;
return true;
}

function Body()
{
$FileSize = 0;
$Attachment = null;
$fp = null;

$buffer = sprintf( "From: %s\r\nTo:%s\r\nSubject:%s\r\n", $this->FromName, $this->ToName, $this->Subject);

if(fputs($this->Socket, "DATA\r\n")<0){
return false;
}
$this->Line = fgets($this->Socket, 1024);

$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "3") return false;

if(fputs($this->Socket, $buffer)<0){
return false;
}

if ($this->Attachment == null){

if(fputs($this->Socket, "MIME-Version: 1.0\r\nContent-Type: text/plain; charset=ISO-8859-1\r\nContent-Transfer-Encoding: 7bit\r\n\r\n")<0){
return false;
}
if(fputs($this->Socket, "$this->Body\r\n\r\n")<0){
return false;
}

if(fputs($this->Socket, ".\r\n")<0){
return false;
}

$this->Line = fgets($this->Socket, 1024);
if (substr($this->Line, 0, 1) <> "2"){
return false;
}else{
return true;
}
}else{
if(fputs($this->Socket, "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"----=_NextPart_000_01BCFA61.A3697360\"\r\n".
"Content-Transfer-Encoding: 7bit\r\n\r\n".
"This is a multi-part message in MIME format.\r\n".
"\r\n------=_NextPart_000_01BCFA61.A3697360\r\n".
"Content-Type: text/plain; charset=ISO-8859-1\r\n".
"Content-Transfer-Encoding: 7bit\r\n".
"\r\n")<0){
return false;
}

/* 输出邮件内容 */
if(fputs($this->Socket, "$this->Body\r\n\r\n")<0){
return false;
}

if ( fputs($this->Socket, "\r\n------=_NextPart_000_01BCFA61.A3697360\r\n")<0){
return false;
}
$FileSize = filesize($this->Attachment);
if ($FileSize == false){
return false;
}
if (($fp = fopen($this->Attachment, "r"))== false) {
return false;
}else{
$Attachment = fread($fp,$FileSize);
}

// 如果没有附件的目录
if (($AttachName = strrchr($this->Attachment, '/')) == false){

$AttachName = $this->Attachment;
}

if( fputs($this->Socket,
"Content-Type: application/octet-stream; \r\nname=\"$AttachName\"\r\n".
"Content-Transfer-Encoding: quoted-printable\r\n".
"Content-Description: $AttachName\r\n".
"Content-Disposition: attachment; \r\n\tfilename=\"$AttachName\"\r\n".
"\r\n")<0){
return false;
}

/* 输出附件*/
if( fputs($this->Socket, $Attachment)<0){
return false;
}
if ( fputs($this->Socket, "\r\n\r\n------=_NextPart_000_01BCFA61.A3697360--\r\n")<0){
return false;
}

if( fputs($this->Socket, ".\r\n")<0){
return false;
}

$this->Line = fgets($this->Socket, 1024);
if (substr($this->Line, 0, 1) <> "2")
return false;

return true;

}
}

function Quit()
{

if(fputs($this->Socket, "QUIT\r\n")<0){
return false;
}
$this->Line = fgets($this->Socket, 1024);

$this->Status[ "LASTRESULT"] = substr($this->Line, 0, 1);
$this->Status[ "LASTRESULTTXT"] = substr($this->Line, 0, 1024);

if ($this->Status[ "LASTRESULT"] <> "2") return 0;

return 1;
}
function Close()
{
fclose($this->Socket);
}
}
/*

怎样使用这个程序的一个示例

$MailTo = new Smtp();
$MailTo->SmtpMail("Dave@micro-automation.net","Dave Cramer",
"Dave@micro-automation.net","David",
"Test Mail",$MailMessage,"service.tab",0);
$MailTo->Close();
$MailTo=null;

*/
/*
$pop3 = pop3_open("localhost", "110");
if (!$pop3) {
printf("[ERROR] Failed to connect to localhost<BR>\n");
return 0;
}

if (!pop3_user($pop3, "unk")) {
printf("[ERROR] Username failed!<BR>\n");
return 0;
}

if (!pop3_pass($pop3, "secret")) {
printf("[ERROR] PASS failed!<BR>\n");
return 0;
}

$articles = pop3_list($pop3);
if (!$articles) {
printf("[ERROR] LIST failed!<BR>\n");
return 0;
}

for ($i = 1; $i < $articles ["count"] + 1; $i++)
{
printf("i=$i<BR>\n");
$data = pop3_retr($pop3,$i);
if (!$data) {
printf("data goes wrong on '$i'<BR>\n");
return 0;
}

for ($j = 0; $j < $data["count"]; $j++)
{
printf("$data[$j]<BR>\n");
}
}
*/
?>


MIME邮件程序(佚名)

MIME邮件程序

<?
/*
* email.php3
*
*
* E na Net service
*
* 这个信息是秘密和私人的
* (C) Copyright Manuel Lemos. All Rights Reserved.
*
* $Log: email.php3,v $
*  1.6修正版  1998/05/18 15:57:17  mlemos
*
*
*
*/

Function EmailValidateAddress($address)
{
return(ereg(
"^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$",$address));
}

$default_email_charset= "iso-8859-1";

Function EmailEncodeQuotedPrintable($text,$header_charset)
{
$length=strlen($text);
for($whitespace= "",$line=0,$encode= "",$index=0;$index<$length;$index++)
{
$character=substr($text,$index,1);
$order=Ord($character);
$encode=0;
switch($order)
{
case 9:
case 32:
if($header_charset== "")
{
$previous_whitespace=$whitespace;
$whitespace=$character;
$character= "";
}
else
{
if($order==32)
$character=
"_";
else
$encode=1;
}
break;
case 10:
case 13:
if($whitespace!= "")
{
if($header_charset== ""
&& $line+3>75)
{
$encoded.=
"=\n";
$line=0;
}
$encoded.=sprintf( "=%02X",Ord($whitespace));
$line+=3;
$whitespace= "";
}
$encoded.=$character;
$line=0;
continue 2;
default:
if($order>127
|| $order<32
|| $character== "="
|| ($header_charset!= ""
&& ($character== "?"
|| $character== "_"
|| $character== "("
|| $character== ")")))
$encode=1;
break;
}
if($whitespace!= "")
{
if($header_charset== ""
&& $line+1>75)
{
$encoded.= "=\n";
$line=0;
}
$encoded.=$whitespace;
$line++;
$whitespace= "";
}
if($character!= "")
{
if($encode)
{
$character=sprintf( "=%02X",$order);
$encoded_length=3;
}
else
$encoded_length=1;
if($header_charset== ""
&& $line+$encoded_length>75)
{
$encoded.= "=\n";
$line=0;
}
$encoded.=$character;
$line+=$encoded_length;
}
}
if($whitespace!= "")
{
if($header_charset== ""
&& $line+3>75)
$encoded.= "=\n";
$encoded.=sprintf( "=%02X",Ord($whitespace));
}
if($header_charset!= ""
&& $text!=$encoded)
return( "=?$header_charset?q?$encoded?=");
else
return($encoded);
}

Function EmailEncodeAddress($address,$name,$header_charset)
{
global $default_email_charset;

if($header_charset== "")
$header_charset=$default_email_charset;
return( "$address (".EmailEncodeQuotedPrintable($name,$header_charset). ")");
}

class email_message
{
var $mailer= "";
var $default_charset=$default_email_charset;

var $headers=array( "To"=> "",
"Subject"=> "");
var $body=array();
var $parts=0;

Function SetHeader($header,$value)
{
$this->headers[ "$header"]= "$value";
return( "");
}

Function AddBodyText($text)
{
$this->body[$this->parts][ "CONTENTS"]=$text;
$this->body[$this->parts][ "TYPE"]= "TEXT";
$this->parts++;
return( "");
}

Function AddBodyEncodedText($text)
{
$this->body[$this->parts][ "CONTENTS"]=EmailEncodeQuotedPrintable($text, "");
$this->body[$this->parts][ "TYPE"]= "ENCODED_TEXT";
$this->body[$this->parts][ "CHARSET"]=$this->default_charset;
$this->parts++;
return( "");
}

Function AddBodyPreEncodedText($text)
{
$this->body[$this->parts][ "CONTENTS"]=$text;
$this->body[$this->parts][ "TYPE"]= "ENCODED_TEXT";
$this->body[$this->parts][ "CHARSET"]=$this->default_charset;
$this->parts++;
return( "");
}

Function Send()
{
if(!IsSet($this->headers[ "To"])
|| $this->headers[ "To"]== "")
return( "the header To: was not defined");
if(!IsSet($this->headers[ "Subject"])
|| $this->headers[ "Subject"]== "")
return( "the header Subject: was not defined");
for($charset=$body= "",$part=0;$part<$this->parts;$part++)
{
if($part>0)
return( "multipart mails are not yet supported");
switch($this->body[$part][ "TYPE"])
{
case  "TEXT":
if($body== "")
$body=$this->body[$part][ "CONTENTS"];
else
$body.=$this->body[$part][ "CONTENTS"];
break;
case  "ENCODED_TEXT":
if($body== "")
$body=$this->body[$part][ "CONTENTS"];
else
$body.=$this->body[$part][ "CONTENTS"];
$charset=$this->body[$part][ "CHARSET"];
break;
}
}
for($header=0,$headers= "",Reset($this->headers);$header<count($this->headers);Next($this->headers),$header++)
{
switch(Key($this->headers))
{
case  "To":
case  "Subject":
break;
default:
$headers.=Key($this->headers). ": ".$this->headers[Key($this->headers)]. "\n";
break;
}
}
if($this->mailer!= "")
$headers.= "X-Mailer: $this->mailer";
if($charset!= "")
$headers.= "MIME-Version: 1.0\nContent-Type: text/plain; charset=$charset\nContent-Transfer-Encoding: quoted-printable\n";
return($this->SendMail($this->headers[ "To"],EmailEncodeQuotedPrintable($this->headers[
"Subject"],$this->default_charset),&$body,$headers));
}

Function SendMail($to,$subject,$body,$headers)
{
mail($to,$subject,&$body,$headers);
return( "");
}

Function ResetBody()
{
$this->body=array();
return( "");
}
};

?>


InString 函数程序(佚名)

InString 函数程序

<?php
/* 这个函数返回字串S1在字串S2中的位置。如果S2中没有包含S1，那么就返回0
*/
function InStr($s1, $s2)
{
//检查是否合法输入
if(!(is_string($s1) && is_string($s2))) return 0;

$s1len = strlen($s1);
$s2len = strlen($s2);

//检查S1是否在S2中
if(!ereg($s1, $s2)) return 0;

//如果是一个简单的实例
if($s1 == $s2) return 1;

//设置最小搜索次数
$begin = 0;
$end = $s2len - $s1len;

//初始搜索位置
$position = 0;

//做一个s2 在 s1的二进制的搜索
while($end > $begin + 1)
{
$middle = ceil(($begin + $end) / 2);
$leftBegin = $begin;
$rightBegin = $middle + $s1len;
$leftEnd = $middle;
$rightEnd = $end + $s1len;

//先检查左边
if(ereg($s1, substr($s2, $leftBegin, $rightBegin - $leftBegin)))
{
$end = $middle;
}
else  //(ereg($s1, substr($s2, $leftEnd, $rightEnd - $leftEnd)))
{
$position += $middle - $begin;
$begin = $middle;
}
}

if(ereg($s1, substr($s2, $end, $s1len))) $position++;

//返回所在的位置
return $position + 1;
}
?>


用户访问记录程序(佚名)

用户访问记录程序

<?$date = `date`;?>
<?$client=$number_of_last_visit;?>
<?$host=$REMOTE_HOST;?>
<?$addr=$REMOTE_ADDR;?>
<?$dir= "/usr/local/share/apache/htdocs/website/orders/order.dat";?>
<?$fp = fopen($dir, "a");fwrite($fp, "<tr><td>&nbsp;");fclose($fp);?>
<?$fp = fopen($dir, "a");fwrite($fp,$client);fclose($fp);?>
<?$fp = fopen($dir, "a");fwrite($fp, "</td><td>&nbsp;");fclose($fp);?>
<?$fp = fopen($dir, "a");fwrite($fp,$date);fclose($fp);?>
<?$fp = fopen($dir, "a");fwrite($fp, "</td><td>&nbsp;");fclose($fp);?>
<?$fp = fopen($dir, "a");fwrite($fp,$HTTP_REFERER. "\n");fclose($fp);?>
<?$fp = fopen($dir, "a");fwrite($fp, "</td><td>&nbsp;");fclose($fp);?>
<?if (!isset($host)) { `echo $addr >> $dir`;} else { `echo $host >> $dir`;}?>
<?$fp = fopen($dir, "a");fwrite($fp, "</td></tr>");fclose($fp);?>