草稿--cgi

-----------------------------------------------------------------------------------------------------



术语:

    CGI:    公用网管接口(Common Gateway Interface)

    URL:     资源定位器

    JSON:    JavaScript 对象表示法(JavaScript Object Notation)

        > JSON 是存储和交换文本信息的语法。类似 XML。

        > JSON 比 XML 更小、更快,更易解析。



-----------------------------------------------------------------------------------------------------



1、浏览Web

    1)Web  :指试图进行数据交换的两个不同系统之间进行的交互操作。

        抓取Web页 -- 客户机系统

        另一端    -- Web服务器系统

    2)URL:资源定位器

    当客户机需要检索一个We b页时,它要查看统一资源定位器( U R L),以确定使用什么协

议、服务器,以及在该服务器上提出的是什么请求。

        示例: http://www.google.com:80/more.html

    URL可分割成下列部分:

        1)http  :使用协议,传送Web页的协议.也会看到ftp 或 https等协议.

        2)www.google.com    :服务器名或主机名,包含想要的文档.

                            :有时不是主机名,而是IP地址,常写作地址,如209.185.108.147.

        3):80               :端口号,确定[客] 和 [服]在哪个端口连接,http常使用80.

        4)more.html     :指对服务器提出的请求.常为你想检索的文档.

                            :有时其为路径名,例如:/archives/foo.html;

                            :或使用其他字符结尾(?&),不过其基本上指客户机要求向服务器检索的文档.

    这时客户机为http下列操作步骤:

        1)主机名转换成IP地址,主机名为:www.google.com;

        2)使用IP地址和端口号与www.google.com上的服务器建立连接;

        3)服务器发出应答,在上例中,服务器发出more.html的内容,然后断开与服务器的连接。

        4)客户机在屏幕上显示服务器应答的Web内容。



-----------------------------------------------------------------------------------------------------



2、动态Web页 -- 使用CGI

    1)检索静态Web页:服务器不对数据进行任何处理,它只是查看客户机提出的请求,并

    将请求的数据传送给客户机。

    2)在Web上创建动态内容的方法之一是使用 CGI程序,CGI是Web服务器用来在服务器上

    运行程序以便生成Web内容的公认的方法。

    3)URL-->CGI --> Web内容 --> 客户端

    4)客户机检索CGI程序的Web页时:

        1)服务器启动CGI程序的一个新实例。

        2)CGI程序使用它需要的信息生成一个Web页,或者生成另一个应答。

        3)该Web页被送回给客户机。

        4)CGI程序退出。

    5)表单的action事件告诉了浏览器把数据发送给哪个cgi程序进行处理,

    cgi脚本包括三个部分:

        1)读取用户的表单输入,

        2)对输入进行处理,

        3)把结果输出给标准输出;



    当提交表单时会以下列格式产生cgi程序的输入:

      http://192.168.168.206/cgi-bin/get?name=Kevin+Burris&[email protected]

                            |--cgi路径--|-----------------参数------------------|

                            |----------------------输入部分---------------------|

    参数解析如下:

        1) nameX表示参数名称;

        2) valueX表示参数值;

        3) 每参数以&分割;

        4) 另外+表示空格,如Kevin+Burris;

        5) %xx表示十六进制数。

    数据输入的方法:get 和 post

        GET :将数据附加在URL后发送。

            如:/cgi/a_cgi_test.exe?your_data,

            CGI程序通过检查环境变量QUERY_STRING来得到输入数据。

        POST:将数据送到CGI程序的stdin输入流。

            在表单中的各个变量都以name=value形式向WEB服务器发送,多数据间用&分隔。

            如:name=value&name2=value2。其中名字(name,name2)是Form中定义的

            INPUT、SELECT或TEXTAREA等标置(Tag)名字,值是用户输入或选择的标置值。

    6)CGI处理程序:任何具有标准输入/输出,环境变量的语言都可以。

    7)CGI输出:cgi输出必须有一个cgi标题

    标题有以下三类:

        1)Location      : 指明输出另一个文档的URL.

                    例如 fprintf(stdout,"Location: http://www.vchelp.net/\n\n"); 

        2)Content-Type  : 指明发送的数据的MIME类型.

                    例如 fprintf(stdout,"Content-Type: text/html\n\n"); 

        3)Status        : 指明HTTP状态码.

                    例如 fprintf(stdout,"Status: 200\n\n"); 

    

    注意:每种标题后都必须跟一个换行和一个空行。



    MIME类型以类型/子类型的形式来表示,下面是一些常用的类型/子类型的组合: 

        Text/plain 普通文本类型 

        Text/html HTML格式的文本类型 

        Audio/basic 八位声音文件格式,后缀为.au 

        Video/mpeg MPEG文件格式 

        Video/quicktime QuickTime文件格式 

        Image/gif GIF图形文件 

        Image/jpeg JPEG图形文件 

        Image/x-xbitmap X bitmap图形文件,后缀为.xbm 



-----------------------------------------------------------------------------------------------------





********************************************************************************

********************************************************************************

********************************************************************************



#------------------------------------------------------------------------------#



环境变量:

    一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和

系统文件夹位置等。

    Linux下的环境变量



    shell环境依赖于多个文件的设置。当shell被调用时,它从两个初始文件读取命令。

/etc/profile包含了系统变量,它由系统管理员维护,由系统管理用设置本地系统变量和特

殊命令。普通用户的启动信息文件($HOME/.bash_project)由各用户自己维护,该文件可以被

修改以实现任何特定的系统初始化。

    只有在特定的情况下才读取profile文件,确切的说是在用户登陆的时候。当运行shell

脚本或subshell以后,就无须再读profile.虽然所有profile都可选的,但是基本上所有系统

都有/etc/profile.

    如果定义了变量ENV且已经传递到环境中没所有的bash shell都要读取并调用由这个变量

制定的文件所包含的命令。这个文件用来定义所有bash shell的特征,而不仅仅是登陆到shell。

这个文件的典型的名字是$HOME/,bashrc。

  当用(系统管理员)新建用户时,.bash_profile、bashrc和其他公共的环境文件模板将

复制到/etc/skel这个目录下面。可以编辑这些初始化设置,也可以在此目录下添加附加的文件。

  Example:

  一个典型的系统profile(/etc/profile):

  PATH=$PATH:/usr/qa/tools/bin

  ENV==$HOME/.bashrc

  ORACLE_HOME=/dbs/oracle

  ORACLE_SID=qadb

  Export PATH ENV ORACLE_HOME ORCAL_SID

  Cat /etc/motd

  一个典型的用户profile(.bashrc)

  PATH=$PATH:$HOME/bin

  TEAM=uvt1224 export TERM

  stty intr \^C

  cal

  mesg n

  一个典型的用户 bashrc file (.bashrc):

  alias dir=ls lf='ls -FC'

  PSI='$PWS[!]>'

  set -o vi

  别名和其他bash专用的定义应该放在.bashrc文件(不应在.bash_profile) 中定义;

否则会导致找不到某些命令。

  应该记住profile文件和.bashrc文件的区别:两个profile都只在系统启动时被读取一次,

而.bashrc在系统启动和每次调用shell的时候都要被读取。



********************************************************************************

********************************************************************************

********************************************************************************

你可能感兴趣的:(cgi)