?? cgi1.htm
字號(hào):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<title>Perl教程之CGI應(yīng)用</title>
<LINK rel="stylesheet" href="article.css" type="text/css">
</head>
<body>
<br>
<p align="center">第一章 cgilib例(未定稿)</p>
<p align="center"><a target="_blank" href="http://flamephoenix.126.com">by flamephoenix</a></p>
一個(gè)簡(jiǎn)單的讀取并處理表格請(qǐng)求數(shù)據(jù)的cgilib.pl例子:<br><br>
#!/usr/bin/perl<br><br>
sub readGetData{
<br> <B># 指定局部變量queryString用以保存和傳遞函數(shù)的參數(shù)</B>
<br> local(*queryString) = @_ if @_;
<br> <B># 讀取環(huán)境變量QUERY_STRING的值賦給變量$queryString</B>
<br> $queryString = $ENV{"QUERY_STRING"};
<br> return 1;<br>
}<br><br>
sub readPostData{
<br> local(*queryString)=@_ if @_;
<br> local($contentLength);
<br> <B># 讀取環(huán)境變量CONTENT_LENGTH的值</B>
<br> $contentLength = $ENV{"CONTENT_LENGTH"};
<br> <B># 檢查是否有數(shù)據(jù)</B>
<br> if($contentLength){
<br> <B># 從設(shè)備STDIN讀取contentLength長(zhǎng)度的字符賦給$queryString</B>
<br> read(STDIN,$queryString,$contentLength);
<br> }
<br> return 1;
<br>}
<br><br>
sub readData{
<br> local(*queryString) = @_ if @_;
<br> <B># 讀取環(huán)境變量REQUEST_METHOD</B>
<br> $requestType=$ENV{"REQUEST_METHOD"};
<br>
<br> <B># 如果請(qǐng)求方式為GET則使用函數(shù)readGetData</B>
<br> <B># 否則如果請(qǐng)求方式為POST則使用函數(shù)readPostData</B>
<br> if($requestType eq "GET"){
<br> &readGetData(*queryString);
<br> }
<br> elsif($requestType eq "POST"){
<br> &readPostData(*queryString);
<br> }
<br> return 1;
<br>}
<br><br>
sub DecodeData{
<br> local(*queryString)= @_;
<br> <B># 把加號(hào)轉(zhuǎn)換成空格</B>
<br> $queryString=~s/\+/ /g;
<br> <B># 轉(zhuǎn)換十六進(jìn)制字符</B>
<br> $queryString=~s/%(..)/pack("c",hex($1))/ge;
<br> return 1;
<br>}
<br><br>
sub parseData{
<br> local(*queryString,*formData) = @_ if @_;
<br> local($key,$value,$curString,@tmpArray);
<br>
<br> <B># 以&為分隔符把字符串轉(zhuǎn)換成鍵-值對(duì)</B>
<br> @tmpArray = split(/&/,$queryString);
<br>
<br> <B># 在數(shù)組@tmpArray內(nèi)循環(huán)</B>
<br> foreach $curString(@tmpArray){
<br> <B># 以=為分隔符分開鍵-值對(duì)</B>
<br> ($key,$value) = split(/=/,$curString);
<br> <B># 解碼</B>
<br> &DecodeData(*key);
<br> &DecodeData(*value);
<br> <B># 把鍵和值加到字典中</B>
<br> $formData{$key}=$value;
<br> }
<br> return 1;
<br>}
<br><br>
1;<br>
#end of file cgilib.pl
<br><br><br>
<b>使用方法:</b><br><br>
要使用此庫(kù)需含下列語(yǔ)句:<br>
#require "cgilib.pl";<br>
表格數(shù)據(jù)處理:<br>
%dataDict=();<br>
&readData(*data);<br>
&parseData(*data,dataDict);<br>
字典數(shù)據(jù)處理:
<br>while(($key,$value)=each(%dataDict)){
<br> print $key,"=",$value,"\n\n";<br>
}<br>
<br>
</p>
<p align="center"><a href="cgi2.htm">下一章</a> <a href="index.htm">目錄</a></p>
<br>
</body>
</html>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -