使用Perl開發(fā)Internet/Intranet應用之二(5)
發(fā)表時間:2024-02-10 來源:明輝站整理相關軟件相關文章人氣:
[摘要]----發(fā)送郵件:可通過調用系統命令實現,如system"mailxzyr\@gznet.com< a.txt"或exec"mailxzyr\@gznet.com< a.txt"。(a.txt為要發(fā)送的郵件內容,"\"是取消@...
----
發(fā)送郵件:可通過調用系統命令實現,如system"mailxzyr\@gznet.com< a.txt"或exec"mailxzyr\@gznet.com< a.txt"。(a.txt為要發(fā)送的郵件內容,"\"是取消@特殊字符的含義)前者系統命令運行完后,會繼續(xù)執(zhí)行下面的語句;而后者調用結束后,整個程序就會結束,原來的perl程序也不能繼續(xù)執(zhí)行。故一般后者通常放在程序最后一行執(zhí)行。
----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)< a >
CGI< /a >
----結果也是一樣的;但卻很少有人會去想這兩種方法傳輸數據時用的是哪種方式。其實,前者采用的方式在method中設置可以是GET也可以是POST,而后者采用的則是GET方式。GET與POST的區(qū)別在于,如果以GET方式傳輸,所帶參數附加在CGI程式的URL后直接傳給server,并可從server端的QUERY_STRING這個環(huán)境變量中讀取;如果以POST方式傳輸,則參數會被打包在數據報中傳送給server,并可從CONTENT_LENGTH這個環(huán)境變量中讀取出來。還有一種情況是,你用的是GET方式,但傳送的參數是路徑,如:
----< ahref="/cgi-bin/a.pl/usr/local/bin/pine" >CGI< /a >
----這時所傳遞的參數"/usr/local/bin/pine"存放在PATH_INFO這個環(huán)境變量中。環(huán)境變量的讀取方式為$str=$ENV{'QUERY_STRING'};
----有時候我們非常希望能記錄下訪問我們頁面的用戶所用的瀏覽器是什么?名字、地址又是什么?這時候我們就要借助server端的一系列環(huán)境變量了。下面列出其它一些常用的環(huán)境變量。
SERVER_NAMEserver的機器名稱或IP地址
SERVER_PORTserver正在運行的端口號
REQUEST_METHOD發(fā)出request的方法(GET/POST/HEAD)
SCRIPT_NAME程式被調用的路徑,如:cgi-bin/a.pl
REMOTE_HOST發(fā)出request請求的遠端機器(client)的名稱
REMOTE_ADDR發(fā)出request請求的遠端機器(client)的IP地址
REMOTE_IDENT發(fā)出request的使用者名稱(如是撥號上網,則為用戶
ID),當NCSAIdentityCheck為enabled,而且client
機器支持RFC931時,該變量有效
CONTENT_TYPE數據的MIME型別,如:"text/html"
HTTP_ACCEPTclient可以接受的MIME型別列表
HTTP_USER_AGENTclient發(fā)出request的瀏覽器類型
HTTP_REFERER在讀取CGI程式之前,client所指的文本URL
----以上環(huán)境變量并非所有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";