形式:发送输入
我们已经看到,创建CGI脚本是非常容易的。任何可执行文件放置在Web服务器执行目录目录,和任何输出可执行文件发送到stdout出现在浏览器的脚本。现在我们需要的是一种方法来发送输入脚本。正常方式发送输入是使用HTML形式。
你看到在互联网形式。任何页面,您可以类型是一个形式的东西。你看到他们在搜索引擎,客人书籍,问卷调查,等。HowStuffWorks.com的主页包含至少两个mini-forms,一个用于“你怎么在这里?”栏,一个用于建议栏(是18新利最新登入的,单个HTML页面可以包含多种形式)。你创建表单的HTML页面,在表单的HTML标记您指定的名称CGI脚本调用当用户单击提交表单上的按钮。用户进入表单的值是打包和发送到脚本,它可以以任何方式使用它们。
广告
你实际上已经看到这样的事情不断的发生了,可能不知道。例如,去http://www.lycos.com,输入“测试”这个词进入“搜索:“盒子,按“去得到它!”按钮。结果页面的URL是这样的:
http://www.lycos.com/cgi-bin/pursuit?matchmode =和&cat=lycos&query=test&x=10&y=9
可以看到,莱科思主页是一个形式。莱科思脚本目录中的目录命名追求。形式发送五个参数的脚本:
- matchmode =和
- 猫=莱科思
- 查询=测试
- x = 10
- y = 9
第三个是我们输入的搜索字符串。其他四个都是脚本。CGI脚本查询莱科思数据库“测试”这个词,然后返回结果。这是任何搜索引擎的核心!
让我们创建一个简单的形式尝试这一点。创建一个文件命名simpleform.htm和下面的HTML输入:
身体< html > < > < h1 > =一些超级简单的表单< h1 > <表单方法得到ACTION = " https://www.howstuffwo18新利最新登入rks.com/目录/ simpleform。cgi " >输入你的名字:<输入名称=“Name”大小= 20最大长度= 50 > < P > < input TYPE =提交value = "提交" > < input TYPE =重置价值=“重置”> < /形式> < /身体> < / html >
指定的HTML代码创建一个表单,使用GET方法发送到CGI脚本https://www.18新利最新登入howstuffworks.com/cgi-bin/simpleform.cgi。里面是一个文本输入区域+标准的形式提交和重置按钮。
该文件https://www.18新利最新登入howstuffworks.com/cgi-bin/simpleform.cgi引用的形式是一个C程序。它开始生活这段C代码放置在一个文件命名simpleform.c:
# include < stdio。h > # include < stdlib。h > int main () {printf (" content - type: text / html \ n \ n”);printf (" < html > \ n ");printf(" <身体> \ n ");printf (" < h1 >所输入的值是:“)printf (" % s < / h1 > \ n ", getenv (QUERY_STRING "));printf(" < /身体> \ n ");printf (" < / html > \ n ");返回0;}
这是使用下面的命令编译:
gcc simpleform。c - o simpleform.cgi
放在目录的目录。这个程序只是拿起形式发送的值并显示它。例如,您可能会看到下面的:
所输入的值是:Name =约翰史密斯+
的名字的标识符是表单中的文本输入字段(每个输入字段在表单应该有一个独一无二的标识),然后呢约翰·史密斯+是一个典型的名字可能进入表单。注意“+”取代了空格字符。
从这个例子中,您可以看到建立一个形式的基本过程和获得的数据形成一个CGI脚本相当简单。这里有几个细节需要记住:
- 每个输入字段在表单上应该有一个唯一的标识符。
- 表单需要使用GET或POST方法。GET方法的优点是你可以看到表单的值发送到脚本的URL,并且更容易调试。
- 有明确的限制的字符的数量可以通过GET方法发送,所以大型表单职位者优先。
- 接收到的数据通过GET方法通过观察QUERY_STRING环境变量(通常读的采用在PERL函数C或美元ENV设施)。通过POST方法的数据可以通过使用STDIN得到在C或读在PERL。
- 进来的数据会有所有字段连接在一起在一个单一的字符串,和许多字符将取代,因此需要翻译。例如,所有的空间都将替换为正号。
QUERY_STRING环境变量的问题环境变量一般来说。有许多环境变量,您可以检查您的CGI脚本,包括:
- AUTH_TYPE
- CONTENT_LENGTH
- CONTENT_TYPE
- GATEWAY_INTERFACE
- HTTP_ACCEPT
- HTTP_USER_AGENT
- PATH_INFO
- PATH_TRANSLATED
- QUERY_STRING
- REMOTE_ADDR
- REMOTE_HOST
- REMOTE_IDENT
- REMOTE_USER
- REQUEST_METHOD
- SCRIPT_NAME
- SERVER_NAME
- SERVER_PORT
- SERVER_PROTOCOL
- SERVER_SOFTWARE
有各种各样的有趣的信息隐藏在这些环境变量,包括输入字符串的长度(CONTENT_LENGT18luck手机登录H),使用的方法(GET或POST - REQUEST_METHOD让你找出是否在STDIN或QUERY_STRING寻找输入),IP地址用户的机器(REMOTE_ADDR),等等。这些变量的完整描述,请参阅CGI环境变量。