明辉站/网站教程/内容

使用Perl开发Internet/Intranet应用之二(5)

网站教程2024-06-06 阅读
[摘要]----发送邮件:可通过调用系统命令实现,如system"mailxzyr\@gznet.com< a.txt"或exec"mailxzyr\@gznet.com< a.txt"。(a.txt为要发送的邮件内容,"\"是取消@...
----发送邮件:可通过调用系统命令实现,如system"mailxzyr\@gznet.com< a.txt"或exec"mailxzyr\@gznet.com< a.txt"。(a.txt为要发送的邮件内容,"\"是取消@特殊字符的含义)前者系统命令运行完后,会继续执行下面的语句;而后者调用结束后,整个程序就会结束,原来的perl程序也不能继续执行。故一般后者通常放在程序最后一行执行。
----6Server与Client传递数据的方法

----很多人都知道由client传送数据到server可通过下面两种方法,

1)< formmethod="GET/POST"
action="http://10.0.0.1/Script/a.pl" >
< inputtype="hidden"name="a"value="1" >
< inputtype="hidden"name="b"value="2" >
< inputtype="submit"name="submit"value="Go" >
< /form >

2)< ahref="http://10.0.0.1/Scripts/a.pl?a=1&b=2" >
CGI< /a >


----结果也是一样的;但却很少有人会去想这两种方法传输数据时用的是哪种方式。其实,前者采用的方式在method中设置可以是GET也可以是POST,而后者采用的则是GET方式。GET与POST的区别在于,如果以GET方式传输,所带参数附加在CGI程式的URL后直接传给server,并可从server端的QUERY_STRING这个环境变量中读取;如果以POST方式传输,则参数会被打包在数据报中传送给server,并可从CONTENT_LENGTH这个环境变量中读取出来。还有一种情况是,你用的是GET方式,但传送的参数是路径,如:

----< ahref="/cgi-bin/a.pl/usr/local/bin/pine" >CGI< /a >

----这时所传递的参数"/usr/local/bin/pine"存放在PATH_INFO这个环境变量中。环境变量的读取方式为$str=$ENV{'QUERY_STRING'};

----有时候我们非常希望能记录下访问我们页面的用户所用的浏览器是什么?名字、地址又是什么?这时候我们就要借助server端的一系列环境变量了。下面列出其它一些常用的环境变量。

SERVER_NAMEserver的机器名称或IP地址
SERVER_PORTserver正在运行的端口号
REQUEST_METHOD发出request的方法(GET/POST/HEAD)
SCRIPT_NAME程式被调用的路径,如:cgi-bin/a.pl
REMOTE_HOST发出request请求的远端机器(client)的名称
REMOTE_ADDR发出request请求的远端机器(client)的IP地址
REMOTE_IDENT发出request的使用者名称(如是拨号上网,则为用户
ID),当NCSAIdentityCheck为enabled,而且client
机器支持RFC931时,该变量有效
CONTENT_TYPE数据的MIME型别,如:"text/html"
HTTP_ACCEPTclient可以接受的MIME型别列表
HTTP_USER_AGENTclient发出request的浏览器类型
HTTP_REFERER在读取CGI程式之前,client所指的文本URL

----以上环境变量并非所有webserver都支持,需视具体情况而定,建议使用之前先进行测试。

----下面有一个例子,作用是把访问本页面的客户的ip地址和所用的浏览器类型记录并显示出来。

print"HTTP/1.0200OK\n";
print"Content-Type:text/html\n\n";

print"< HTML >\n";
print"< HEAD >\n";
print"< TITLE >test< /TITLE >\n";
print"< /HEAD >\n";
print"< BODY >\n";
print"YourIPAddressis$ENV{'REMOTE_ADDR'}.\n";
print"YourBrowseis$ENV{'HTP_USER_AGENT'}.\n";
print"< /BODY >\n";
print"< /HTML >\n";

……

相关阅读