资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> 其他编程 >> CGI编程 >> 文档正文
最近更新
普通文档 CGI教学:CGI常用环境变量
普通文档 CGI教学:CGI安全问题
普通文档 CGI教学:第四章 设置Web
普通文档 CGI教学:第三章 计数器的
普通文档 CGI教学:第二章 动态创建
普通文档 CGI教学:第一章 cgilib例
普通文档 CGI教程(5)利用CGI解码F
普通文档 CGI教程(4)HTML 表单
普通文档 CGI教程(3)怎样发回文档
普通文档 CGI教程(2)怎样从服务器
推荐文章
  • 此栏目下没有推荐文档
  • 第六章 CGI简明教程

    文章作者:佚名 录入时间:2006-6-2 来源:不详
    网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。


     对于本章的程序——选票程序,我不想多说什么。我只是想在本程序内教给大家如何

        使用perl语言或C语言如何处理字符串的实例。让我们先看看代码:

        页面文件——pote.html

        <HTML>

        <TITLE>投票程序</TITLE>

        <h1>投票程序</h1>

        <FORM METHOD="post" ACTION="/cgi-bin/vote.pl">

        一。你喜欢谁?<br>

        <input type="radio" name="idol" value="A" checked>张德陪<br>

        <input type="radio" name="idol" value="B">阿加西<br>

        <input type="radio" name="idol" value="C">桑普拉斯<br>

        <input type="radio" name="idol" value="D">贝克<br>

        <input type="radio" name="idol" value="D">顾懿<br>

        <input type="submit" value="执行">

        <input type="reset" value="取消">

        </form>

        查询<a href="/cgi-bin/vote.pl?command=view">选举投票结果</a>

        </html>

        CGI程序:——vote.pl

        #!perl

        print"Content-type:text/html\n\n";

        print"<titel>投票系统</title>";

        if($ENV{'REQUEST_METHOD'}eq"POST"){

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

        }elsif($ENV{'REQUEST_METHOD'}eq"GET"){

        $buffer=$ENV{'QUERY_STIRNG'};

        }

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

        foreach $pair(@pairs){

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

        $value=~tr/+//;

        $value=~s/%([a-f A-F 0-9][a-f A-f 0-9])/pack("C",hex($1))/eg;

        $FORM{$name}=$value;}

        $filename="/vote.dat";

        %NAME=("A","张德陪","B","阿加西","C","桑普拉斯","D","贝克","E","顾懿");

        if($ENV{'REQUEST_METHOD'}eq"POST"){

        print"Content-type:text/html\n\n";

        print"<titel>投票系统</title>";

        print"<h1>投票系统的例子</h1>";

        open(FILE,"<$filename")||die"不能打开文件,请和管理员联系\n";

        for($i=0;$i<2;$i++){

        $file[$i]=<FILE>;

        $file[$i]=~s/\n$//;

        }

        close(FILE);

        @item=split(/:/,$file[0]);

        @vote=split(/:/,$file[1]);

        for($i=0;$i<@item;$i++){

        if($FORM{'idol'}eq$item[$i]){

        $vote[$i]++;

        last;

        }

        }

        open(FILE,">filename")||die"Can't Open the file";

        $item=join(":",@item);

        $vote=join(":",@vote);

        pirnt FILE "$item\n";

        print FILE "$vote\n";

        close (FILE);

        print"<h2>您是投票给$NAME{$FORM{'idol'}},谢谢您的选票!<h2>";

        print"查询<a href=\"/cgi-bin/vote.pl?command=viem\">投票结果系统</a>";

        }

        if($FORM{'command'}eq"view"){

        print "HTTP/1.0 200\n";

        print "Content-type:text/html\n\n";

        print"<title>投票结果</title>";

        print"<h1>投票结果</h1>";

        open (FILE,"$filename")||die"文件打开错误";

        for($i=0;$i<2;$i++){

        $file[$i]=<FILE>;

        $file[$i]=~s/\n$//;

        }

        close(FILE);

        @item=split(/:/,$file[0]);

        @vote=split(/:/,$file[1]);

        print"<table border=1>";

        for($i=0;$i<@item;$i++){

        print"<tr><td>姓名</td><td>$NAME{$item[$i]}</td><td>票数</td>,td>$vote[$i]

        </td><tr>";

        }

        print "</table>";

        }

        这个程序是要各位学习Perl的分解字符串的功能。在Perl中,字符串操作

        是非常简单的。

        我对几句重要语句做一个分析:

        if($ENV{'REQUEST_METHOD'}eq"POST"){

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

        }elsif($ENV{'REQUEST_METHOD'}eq"GET"){

        $buffer=$ENV{'QUERY_STIRNG'};

        }

        这是一个非常常见的功能块,几乎所有的CGI程序都会用到它。它判断

        页面使用何种方式提交变量。如果是post,就从STDIN里把变量读出,存到

        变量buffer里。注意在perl里,变量是用$开头的。而$ENV{'CONTENT_LENGTH'}

        则是读出该变量的长度,请注意CONTENT_LENGTH是一个环境变量。第二个if则

        处理get情况,在get情况下,页面提交的信息是存放在环境变量QUERY_STIRNG中

        的。所以$buffer也就是页面提交的信息。环境变量REQUEST_METHOD表示方式,

        它的值是一个字符串,前面加上$ENV则表示读出该变量的值。

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

        foreach $pair(@pairs){

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

        $value=~tr/+//;

        $value=~s/%([a-f A-F 0-9][a-f A-f 0-9])/pack("C",hex($1))/eg;

        $FORM{$name}=$value;}

        以上功能块是一个分解过程。页面信息的提交往往是以“名称=值”的形式,

        比如本例子中就是以“idol=顾懿”这样的形式提交的,所以我们要去掉字符串中

        的"="等等信息,但同时要保留“idol”和"顾懿"之间的对应关系。$FORM{$name}

        =$value做到这一点,这是一个关联数组。具体其中的语法,请各位自行查书。接

        下来的就是文件的操作,但那已经不是本课的重点。所以就不多说了。

  • 上一篇文档:

  • 下一篇文档:
  •     查找更多“第六章 CGI简明教程”的内容  
    相关连接
  • DOM的结构(1)

  • 巧用XML做多语言界面的FLASH

  • 在 Excel 2003 中创建 XML 映射(1)

  • WML——XML标记语言开发实例详细解析

  • RSS的语言编码大全