CGI脚本入门学习

作者:凯旋网络来源:凯旋网络
    • CGI脚本是什么?
      • CGI脚本是怎样工作的?
      • 一个简单的例子
    • 我能用CGI脚本吗?
      • 你的服务器配置答应CGI脚本吗?
      • 你能编程吗?
      • 你应该用什么编程语言?
      • 你的服务器设置正确吗?
      • 假如你的服务器不是UNIX系统呢?
    • 解剖CGI脚本
      • 输出头部
      • 输出数据部
      • 带阐述的脚本
      • 传递其他信息给脚本
    • 创建非凡的脚本输出
      • 以装载另一个文本响应
      • 无响应
    • 处理表单的脚本
      • 表单格式和表单脚本
      • GET 和 POST
      • URL 编码
    • 问题
    • CGI 变量
    • 解码程序
      • uncgi
      • cgi-lib.pl
      • 解码文件上传的输入
      • 自己做
    • 非解剖的头部脚本
    • 总结


学习CGI脚本(脚本)

CGI 意思为 Common Gateway Interface, 一种基于浏览器的输入、在Web服务器上运行的程序方法. CGI脚本 使你的浏览器与用户能交互,为了在数据库中寻找一个名词, 提供你写入的评论,或者从一个表单中选择几个条目并且能得到一个明确的回答. 假如你曾经碰到过在web上填表或进行搜索, 你就是用的CGI脚本. 你那时也许没有意识到,因为大部分工作是在服务器上运行的,你看到的只是结果. 作为一个网页设计者, 你创建客户端的 CGI脚本, 服务器端的程序用来处理用户输入, 结果返回给用户. 在这里你将学习关于CGI脚本的一切:
  • CGI脚本是什么?它是怎样工作的
  • 一个CGI脚本输出象什么?
  • 怎样用参数或无参数创建一个CGI脚本
  • 怎样创建一个返回规定响应的CGI脚本
  • 怎样创建一个输入表单的CGI脚本
  • 有关在使用CGI脚本中的问题
  • 你能在脚本中使用的CGI变量

本章节假设在UNIX系统下的。

CGI脚本是什么?

CGI脚本简单地讲是个运行在Web服务器上的程序, 有浏览器的输入触发. 这个脚本通常象服务器和系统中其他程序如数据库的桥梁。 CGI 脚本难道不是一个真正的脚本?按照你的服务器的支持, 他们可能是一个编译好的程序或者批命令文件或者其他可执行的东西. 为了简单起见,我们统称他们为脚本scripts.

CGI 脚本是任何运行在web服务器上的程序. CGI意思是Common Gateway Interface。  
CGI脚本是用下列两种方法使用的: 作为一个表单的ACTION 或 作为一个页中的直接link。

CGI脚本是怎样工作的?

CGI脚本有服务器调用, 基于浏览器的数据输入. 图1 显示在浏览器、服务器和脚本之间是怎样的一个流程. 图1. 从浏览器到服务器到脚本到程序 记住再回来噢! 这有个简短的示意解释:
  1. 一个URL指向一个CGI脚本. 一个CGI脚本的URL能如普通的URL一样在任何地方出现。
  2. 服务器接收请求, 按照那个URL指向的脚本文件(注重文件的位置和扩展名),执行脚本.
  3. 脚本执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他程序.
  4. 脚本产生某种Web服务器能理解的输出结果.
  5. 服务器接收来自脚本的输出并且把它传回浏览器,让用户了解结果。
 

一个简单的例子

这里具体一步一步地解释所有有关发生的细节。
在图2中有个例图:
图2. 带有一个脚本连接的页. Display Date处是个指向CGI脚本的连接. 它的Html是这样的: <A HREF="http://www.popchina.com/cgi-bin/getdate">Display the Date</A>说明是个CGI脚本是因为这里面有个cgi-bin的路径. 在许多服务器cgi-bin是仅能够放置CGI脚本的目录. 当你选择这个连接时, 你的浏览器将向www.popchina.com服务器提出请求. 服务器接收这个请求计算出URL处的脚本文件名然后执行这个脚本. 这个getdate脚本, 在UNIX系统中执行是这样的: #!/bin/shecho Content-type: text/plainecho/bin/date第一行是个非凡的命令,告诉UNIX系统这是个shell脚本; 真实的情况是从这行开始的下一行,这个脚本做两件事:它输出行Content-type: text/plain, 接着开始一个空行;第二, 它调用UNIX系统时间date程序, 这样输出日期和时间. 脚本执行后输出应该这样: Content-type: text/plainTue Oct 25 16:15:57 EDT 1994这个Content-
  • 广告推荐