您的位置:首页 >> Web开发 >> CGI技术 >> 正文
CGI技术 RSS
 

贺卡CGI脚本程序在NT下的实现

http://www.rdxx.com 07年11月30日 23:11 我要投稿

关键词: 贺卡 , CGI , 脚本 , 程序 , NT

  在当今网络众横的时代,不管是网络高手还是网络新手,在节日时经常会收到一些远方朋友通过网上送来的电子贺卡,而你又知不知道这贺卡是如何生成的呢?很多免费贺卡的网站上都有“你也自己亲手为你的朋友选一张贺卡”的链接,只要填上名称、邮件地址即可让对方收到你的电子贺卡。再深入一些,其实这些贺卡完全通过CGI脚本程序来实现的,曾经拥有过个人主页(拥有CGI执行权)的网友可能深有体会,几乎所有的免费贺卡脚本程序都工作在Unix系统下,而那些使用 Windows NT服务器的压根用不成,因为没有Unix下的SENDMAIL(为了区别两个不同的软件,大写为Unix下的SENDMAIL服务器,小写为小林的 sendmail)来发邮件,包括反馈表邮件回执等都无法应用,后来国外有个程序员写了一个Blat,可以代替SENDMAIL的某些工作,对于反馈表邮件回执等一些小问题基本上得到解决,但在设置上却比较麻烦,必须在服务器上先安装好以及将动态链接库文件存放在WinNTSystem32目录等,一般的网友想实现都很困难。随着Internet的发展与普及,又有个程序员开发了一个新的作品Stalker's Mailers,这个程序在使用上效为简单,程序小功能显得也少了。小林在学习Sockets过程中,也编了这样一个小程序,叫sendmail for NT,功能跟SMailets和Blat类似,仅支持简单的SMTP协议,需要SMTP服务器的支持,正确的说应该是Client程序。在应用方面比 SENDMAIL要麻烦些,由于需要先建立临时文件,然后再通过Client程序发送。下面将介绍一个简单的贺卡CGI脚本程序的实现方法:


* card2.pl 文件

#!/usr/local/bin/perl

###############################################################

# Program - A Postcard - English version 1.0 for Unix #

# Written by Jason W. Maloney http://www2.bc.edu/~malonejr #

# ----------------------------------------------------------- #

# Program - A Postcard - Chinese version 1.0 for NT #

# Written by Lin's Xinglu http://www.netease.com/~lin #

###############################################################

# 本脚本文件URL

$cgi = "http://www.softsite.com.cn/cgi-bin/postcard/card2.pl";

# 图片文件URL

$basepic = "http://202.130.5.31/cgi-bin/postcard/";

# 贺卡文件URL

$baseurl = "http://www.softsite.com.cn/cgi-bin/postcard/";

# 贺卡文件绝对路径

$basedir = "c:\inetpub\wwwroot\download\cgi-bin\postcard";

# 设置贺卡保留天数

$days = '15';

# 设置sendmail for NT的临时文件(绝对路径)

$filename = "c:\inetpub\wwwroot\cgi-bin\postcard\post.txt";

# 设置Sendmail for NT的绝对路径

$mailprog = "c:\inetpub\wwwroot\cgi-bin\sendmail\sendmail.exe";

# 设置发卡邮递员E-Mail地址

$webmaster = "WebMaster@softsite.com.cn";

# 发送邮件服务器IP

$smtp = "168.160.65.138";

###############################################################

$html = '.html';

$i=0;

read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});

@pairs = split(/&/,$buffer);

foreach $pair (@pairs){

($name,$value) = split(/=/,$pair);

$value =~ tr/+/ /;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;

$FORM{$name} = $value;

}


#############

# 预览贺卡

#############


if ($FORM{'action'} eq 'preview') {

############################################################

&no_email unless $FORM{'mailfrom'} && $FORM{'mailto'};

############################################################

$pic = $FORM{'picture'};

$picture = "$basepic$pic";

print "Content-Type: text/htmlnn";

print "<HTML>n";

print "<TITLE

9 7 3 1 2 3 4 4 8 :


 
 
标签: 贺卡 , CGI , 脚本 , 程序 , NT 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站