⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgiclass6.htm

📁 cgi的基本教程
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>CGI简明教程六 </title>
</head>
<p align="center"><strong>CGI简明教程第六章 
<table border="0" width="100%">
  <tr>
    <td width="86%"><font face="宋体"><small>对于本周的程序----选票程序,我不想多说什么。我只是想在本程序内教给大家如何使用perl语言或C语言如何处理字符串的实例。让我们先看看代码:<br>
    </small></font>页面文件--pote.html<br>
    <font face="8514fix"><small>&lt;HTML&gt;<br>
    &lt;TITLE&gt;投票程序&lt;/TITLE&gt;<br>
    &lt;h1&gt;投票程序&lt;/h1&gt;<br>
    &lt;FORM METHOD=&quot;post&quot; ACTION=&quot;/cgi-bin/vote.pl&quot;&gt;<br>
    一.你喜欢谁?&lt;br&gt;<br>
    &lt;input type=&quot;radio&quot; name=&quot;idol&quot; value=&quot;A&quot; checked&gt;张德陪&lt;br&gt;<br>
    &lt;input type=&quot;radio&quot; name=&quot;idol&quot; value=&quot;B&quot;&gt;阿加西&lt;br&gt;<br>
    &lt;input type=&quot;radio&quot; name=&quot;idol&quot; value=&quot;C&quot;&gt;桑普拉斯&lt;br&gt;<br>
    &lt;input type=&quot;radio&quot; name=&quot;idol&quot; value=&quot;D&quot;&gt;贝克&lt;br&gt;<br>
    &lt;input type=&quot;radio&quot; name=&quot;idol&quot; value=&quot;D&quot;&gt;顾懿&lt;br&gt;<br>
    &lt;input type=&quot;submit&quot; value=&quot;执行&quot;&gt;<br>
    &lt;input type=&quot;reset&quot; value=&quot;取消&quot;&gt;<br>
    &lt;/form&gt;<br>
    查询&lt;a href=&quot;/cgi-bin/vote.pl?command=view&quot;&gt;选举投票结果&lt;/a&gt;<br>
    &lt;/html&gt;</small></font><br>
    CGI程序:--vote.pl<br>
    <strong>#!perl<br>
    print&quot;Content-type:text/html\n\n&quot;;<br>
    print&quot;&lt;titel&gt;投票系统&lt;/title&gt;&quot;;<br>
    <br>
    if($ENV{'REQUEST_METHOD'}eq&quot;POST&quot;){<br>
    read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});<br>
    }elsif($ENV{'REQUEST_METHOD'}eq&quot;GET&quot;){<br>
    $buffer=$ENV{'QUERY_STIRNG'}; <br>
    }<br>
    <br>
    @pairs=split(/&amp;/,$buffer);<br>
    foreach $pair(@pairs){<br>
    ($name,$value)=split(/=/,$pair);<br>
    $value=~tr/+//;<br>
    $value=~s/%([a-f A-F 0-9][a-f A-f 0-9])/pack(&quot;C&quot;,hex($1))/eg;<br>
    $FORM{$name}=$value;}<br>
    <br>
    $filename=&quot;/vote.dat&quot;;<br>
    %NAME=(&quot;A&quot;,&quot;张德陪&quot;,&quot;B&quot;,&quot;阿加西&quot;,&quot;C&quot;,&quot;桑普拉斯&quot;,&quot;D&quot;,&quot;贝克&quot;,&quot;E&quot;,&quot;顾懿&quot;);<br>
    <br>
    if($ENV{'REQUEST_METHOD'}eq&quot;POST&quot;){<br>
    print&quot;Content-type:text/html\n\n&quot;;<br>
    print&quot;&lt;titel&gt;投票系统&lt;/title&gt;&quot;;<br>
    print&quot;&lt;h1&gt;投票系统的例子&lt;/h1&gt;&quot;;<br>
    open(FILE,&quot;&lt;$filename&quot;)||die&quot;不能打开文件,请和管理员联系\n&quot;;<br>
    <br>
    for($i=0;$i&lt;2;$i++){<br>
    $file[$i]=&lt;FILE&gt;;<br>
    $file[$i]=~s/\n$//;<br>
    }<br>
    close(FILE);<br>
    <br>
    @item=split(/:/,$file[0]);<br>
    @vote=split(/:/,$file[1]);<br>
    <br>
    for($i=0;$i&lt;@item;$i++){<br>
    if($FORM{'idol'}eq$item[$i]){<br>
    $vote[$i]++;<br>
    last;<br>
    }<br>
    }<br>
    open(FILE,&quot;&gt;filename&quot;)||die&quot;Can't Open the file&quot;;<br>
    $item=join(&quot;:&quot;,@item);<br>
    $vote=join(&quot;:&quot;,@vote);<br>
    pirnt FILE &quot;$item\n&quot;;<br>
    print FILE &quot;$vote\n&quot;;<br>
    <br>
    close (FILE);<br>
    <br>
    print&quot;&lt;h2&gt;您是投票给$NAME{$FORM{'idol'}},谢谢您的选票!&lt;h2&gt;&quot;;<br>
    print&quot;查询&lt;a href=\&quot;/cgi-bin/vote.pl?command=viem\&quot;&gt;投票结果系统&lt;/a&gt;&quot;;<br>
    <br>
    }<br>
    <br>
    if($FORM{'command'}eq&quot;view&quot;){<br>
    print &quot;HTTP/1.0 200\n&quot;;<br>
    print &quot;Content-type:text/html\n\n&quot;;<br>
    print&quot;&lt;title&gt;投票结果&lt;/title&gt;&quot;;<br>
    print&quot;&lt;h1&gt;投票结果&lt;/h1&gt;&quot;;<br>
    open (FILE,&quot;$filename&quot;)||die&quot;文件打开错误&quot;;<br>
    <br>
    for($i=0;$i&lt;2;$i++){<br>
    $file[$i]=&lt;FILE&gt;;<br>
    $file[$i]=~s/\n$//;<br>
    }<br>
    close(FILE);<br>
    <br>
    @item=split(/:/,$file[0]);<br>
    @vote=split(/:/,$file[1]);<br>
    <br>
    print&quot;&lt;table border=1&gt;&quot;;<br>
    <br>
    for($i=0;$i&lt;@item;$i++){<br>
    print&quot;&lt;tr&gt;&lt;td&gt;姓名&lt;/td&gt;&lt;td&gt;$NAME{$item[$i]}&lt;/td&gt;&lt;td&gt;票数&lt;/td&gt;,td&gt;$vote[$i]&lt;/td&gt;&lt;tr&gt;&quot;;<br>
    <br>
    }<br>
    print &quot;&lt;/table&gt;&quot;;<br>
    }<br>
    </strong><br>
    这个程序是要各位学习Perl的分解字符串的功能。在Perl中,字符串操作是非常简单的。<br>
    我对几句重要语句做一个分析:<br>
    if($ENV{'REQUEST_METHOD'}eq&quot;POST&quot;){<br>
    read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});<br>
    }elsif($ENV{'REQUEST_METHOD'}eq&quot;GET&quot;){<br>
    $buffer=$ENV{'QUERY_STIRNG'}; <br>
    }<br>
    这是一个非常常见的功能块,几乎所有的CGI程序都会用到它。它判断页面使用何种方式提交变量。如果是post,就从STDIN里把变量读出,存到变量buffer里。注意在perl里,变量是用$开头的。而$ENV{'CONTENT_LENGTH'}则是读出该变量的长度,请注意CONTENT_LENGTH<br>
    是一个环境变量。第二个if则处理get情况,在get情况下,页面提交的信息是存放在环境变量QUERY_STIRNG中的。所以$buffer也就是页面提交的信息。环境变量REQUEST_METHOD表示方式,它的值是一个字符串,前面加上$ENV则表示读出该变量的值。<br>
    <br>
    @pairs=split(/&amp;/,$buffer);<br>
    foreach $pair(@pairs){<br>
    ($name,$value)=split(/=/,$pair);<br>
    $value=~tr/+//;<br>
    $value=~s/%([a-f A-F 0-9][a-f A-f 0-9])/pack(&quot;C&quot;,hex($1))/eg;<br>
    $FORM{$name}=$value;}<br>
    以上功能块是一个分解过程。页面信息的提交往往是以“名称=值”的形式,比如本例子中就是以“idol=顾懿”这样的形式提交的,所以我们要去掉字符串中的&quot;=&quot;等等信息,但同时要保留“idol”和&quot;顾懿&quot;之间的对应关系。$FORM{$name}=$value做到这一点,这是一个关联数组。具体其中的语法,请各位自行查书。接下来的就是文件的操作,但那已经不是本课的重点。所以就不多说了。
    <br>
    </td>
  </tr>
</table>

回<a href="default.html" tppabs="http://202.96.217.5/~xiaoyi/default.html">CGI教程目录</a> 
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -