资源大全 | 神秘文化 | 在线翻译 | 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 来源:不详
    网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。


    毫无疑问,当今Web程序设计中最吸引人而且最复杂的当然就是web数据库程序了。平心而论,其复杂高深的程度决不是你们可以想象得到的。我们先来看看其中涉及到的几个方面的问题:

        1.最基本的html设计

        2.CGI程序编写调试

        3.网络管理和客户协调

        4.数据库编写

        5.客户/服务体系程序编写

        另外你还得不时地同你的客户进行斗争,以取得他们对你工作的认同。因此编写一个大型WEB数据库,是综合素质的考验。

        笔者自问尚不完全具备以上的能力,但有幸曾参加过几个web数据库的开发,算是具备了初步的经验吧。这里给大家分享,也算是感谢各位对这个断断续续的教程的总结吧。

        一 数据库选择

        从一般情况来看,使用web数据库往往是要解决数据的归纳、索引和维护的问题。我们一般选择最流行的关系型数据库,比如NT下的sql,win95和nt下的Access,NT下的sybase,unix下的msql等等。当然还有Oracle、FileMaker PRO、Paradox等等。这些都是很流行的Sql数据库。Sql给数据管理提供了一个标准而坚实的接口,它对数据库操作饿所有函数必需在数据库语言中实现。这种函数包括:数据对象的创建、插入数据和数据修改等。对于数据量不大的小型数据库,一般使用access。

        二 接口程序

        虽然我们可以直接编写WEB的CGI接口,但是那是工作量巨大且麻烦异常的工作。为了减轻开发者的负担,数据库程序员为我们编写了许多可以直接使用的接口程序,配合不同的数据库。下面就是一些十分常用的接口程序:

        1. DB2WWW

        http://www.software.ibm.com/data/db2/db2wfac2.html

        这是一个用于和IBM DB2数据库进行连接的工具。在HTTP服务器中,这种工具将HTML文件和SQL命令作为宏文件存储,然后,DB2WWW在接受到浏览器请求后就处理这些宏文件。

        2. dbCGI

        http://www.progress.com/webtools.html

        这个工具通过在html文件中内置SQL语句来实现和数据库的连接。适用于Progress,Sybase,Oracle,Informix,Ingres和ODBC。下面是一个典型的dbCGI程序代码:

    <title>dbCGI test</title>
    <sql init>
    INFORMIXDIR=/usr/informixdir
    SQLEXEC=/usr/informix/sqlturbo
    TBCONFIG=tbconfig
    </sql>
    <sql connect connl>
    <DATABASE=stores>
    <sql>
    <sql format>
    % [! 8:<h1>%8d</h1>%]
    ....
    </sql>
    <sql query connl>
    selet *
    from customer
    order by date,city,zipcode
    </sql>
    <sql disconect connl>
    </sql>
    <sql uninit>
    </sql>
        这个工具通过<sql>标签和%转意字符来把sql语句放置在html语句内。

        3 Genera

        http://gdbdoc.gdb.org/letovsky/genera/general.html

        这个是sybase数据库系统的网关。它通过在文本文件中加入特定的语句来和数据库进行连接。

        4 WebDBC

        http://www.ndev.com

        以windows NT为平台,可以访问所有对odbc兼容的数据库。

        5 A-Xorion

        http://www.clark.net/infouser/endidc.html

        他是一个CGI网关,它可以访问大多数的PC机数据库。它以Windows3.1/95/NT为平台。数据库为Ms Access2.0。

        三 编程语言

        上面介绍的是一些常用的接口程序,它们需要Server的配合才能正常工作。当然如果是很小的数据库程序,不需要使用如此复杂的数据库接口程序。用C,Perl,VB等等,写成CGI程序,在CGI程序内调用数据库。虽然速度方面不是很快,但绝对是非常简单的。

        最后的例子:

        最后,我准备以一个例子来结束这个教程。

        环境:

        这是一个非常简单的WEB应用程序。如果你要运行这个程序,也许你得化些时间来配置自己的系统。在这个例子里,CGI程序由Perl5来编写,后台数据库使用sybase system 10,Sybperl用于建立脚本和数据库之间的通信,用其他的CGI后台数据库接口程序也可以。

    CGI程序:

    <head>
    <title>会议登记程序</title>
    </head>
    <body>
    <h2>会议登记系统</h2>
    please fill out the following form. A registration packet will be sent to you immediatel you.Note that all <b>bolad-faced</b>fields muse be complected.
    <hr>
    <form method="post" action="cgi-bin/resgister.pl">
    <b>first name:</b><input type="text" name="c_fname" size=30>
    <p>
    <b>Last name:</b><input type="text" name="c_lname" size=30>
    <p>
    <b>address 1:</b><input type="text" name="c_add1" size=30>
    <p>
    <b>address 2:</b><input type="text" name="c_add2" size=30>
    <p>
    <b>city:</b><input type="text" name="c_city" size=30>
    <p>
    <b>State:</b><input type="text" name="c_state" size=2>
    <p>
    <b>Zip:</b><input type="text" name="c_zip" size=15>
    <p>
    <b>phone:</b><input type="text" name="c_phone" size=15>
    <p>
    <b>Fax:</b><input type="text" name="c_fax" size=15>
    <p>
    <b>Email:</b><input type="text" name="c_email" size=15>
    <p>
    Packge:
    <ul>
    <li><input type="radio" name="c_packge" valuge="a">Package A
    <li><input type="radio" name="c_packge" valuge="b">Package B
    <li><input type="radio" name="c_packge" valuge="c">Package C
    </ul>
    How did you hear about the conference:
    <ul>
    <li><input type="radio" name="c_ad" value="a">Direct Mail
    <li><input type="radio" name="c_ad" value="b">Associate
    <li><input type="radio" name="c_ad" value="c">Journal
    <li><input type="radio" name="c_ad" value="d">Other
    </ul>
    <p>
    <input type="reset" value="clear"><input type="submit" value="Register"><p>
    </form>

    <hr>
    </body>

    Perl脚本:
    #!/usr/local/bin/perl
    require"cgi-lib.pl";
    &ReadParse(* input);
    $mc_fname=$input{'c_fname'};
    $mc_lname=$input{'c_lname'};
    $mc_add1=$input{'c_add1'};
    $mc_add2=$input{'c_add2'};
    $mc_city=$input{'c_city'};
    $mc_state=$input{'c_state'};
    $mc_zip=$input{'c_zip'};
    $mc_phone=$input{'c_phone'};
    $mc_fax=$input{'c_fax'};
    $mc_email=$input{'c_email'};
    $mc_package=$input{'c_package'};
    $mc_ad=$input{'c_ad'};

    print &PrintHeader;

    if (($mc_fname eq"")||(mc_lname eq "")||(mc_add1  eq "")||($mc_add2  eq "")||(
    mc_city eq "")||(mc_state eq "")||(mc_zip  eq "")){
    printf ("<br>");
    printf(",strong>Your registration cannot be processed as is.Pleae make sure all the requied fields are filled properly.</strong>");
    print"<p>";
    print"Pleae use the <i>Back</i>button to complete the form.\n";
    }
    else{# data is OK

    use Sybase::DBlib;

    $dbh=Sybase::DBlib->dblogin('conf_user','123','DB-SERVER','REG');
    $dbh->dbuse('conference');

    $sqlcmd="insert into reg(c_fname,c_lanme,c_add1,c_add2,c_city,c_state,c_zip, c_phone,c_fax,c_email,c_package,c_ad)";

    $sqlcmd=$sqlcmd."values("
    $sqlcmd=$sqlcmd.'\"".$mc_fname."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_flame."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_add1."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_add2."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_city."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_state."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_zip."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_phone."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_fax."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_email."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_package."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_ad."\",";
    $sqlcmd=$sqlcmd.'\"".$mc_fax."\",";
    $dbh->dbcmd($sqlcmd."\n");
    $dbh->dbsqlexec;

    print"<strong>Thank you.</strong>Your registration has been submitted.You should receive you packet shourtly in the mail.";

    }

  • 上一篇文档:

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

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

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

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

  • RSS的语言编码大全