POST 传递参数给CGI

来源:百度知道 编辑:UC知道 时间:2024/07/04 18:32:07
<form name="frm" action="../cgi-bin/login.cgi" method="post">
<tr>
<td class="name">用户名:</td>
<td input name="username" maxlength="16" type="text" class="input" value="" onMouseMove=""></td>
</tr>
<tr>
<td class="name">密 码:</td>
<td input name="passwd" type="password" maxlength="16" class="input" value="" onMouseMove=""></td>
</tr>
html页是这样的,那到CGI里怎么接收参数啊??用什么函数怎么写
能写个用C写的接收函数吗?

CGI对于POST来的参数,可直接从STDIN里面READ即可,
里面有一个环境变量 ,是用来记录POST数据的长度的。

POST参数:
参数handle:long类型,指定窗口的系统句柄,将向该窗口邮寄消息messageno:UnsignedInteger类型,指定要邮寄的消息号 word:long类型,指定与消息一起邮寄的word类参数值。如果messageno参数指定的消息不使用该参数,那么将这个参数的值设置为0long:long类型或string,指定与消息一起邮寄的long型参数值或字符串返回值Boolean。如果任何参数的值为NULL,Post()函数返回NULL。

用法
Post()函数用于向窗口发送非PowerBuilder预定义事件的消息,这个窗口可以是PowerBuilder应用的窗口,也可以是其它应用的窗口。Post()函数把发送的消息放置在指定窗口消息队列的尾部,然后返回到应用程序中,它并不等待相应事件事件处理程序的执行。这一点与Send()函数不同,Send()函数直接触发指定窗口相应的事件,执行事件处理程序后返回到调用应用中。因此,我们说Post()函数采用的是异步方式,Send()函数采用的是同步方式。Post()函数的参数handle指定接收消息的窗口句柄,对PowerBuilder窗口来说,使用Handle()函数可以得到该句柄。对其它应用程序的窗口来说,可以调用系统API函数查找窗口并得到相应窗口的句柄。如果应用程序要邮寄PowerBuilder定义事件(包括预定义事件和用户定义事件),那么使用PostEvent()函数既简单有方便。当应用程序在long参数位置指定一个字符串时,Post()函数复制一个该字符串的副本,然后将副本的地址传送给指定窗口。

CGI对于POST来的参数,直接从STDIN里面READ即可,有一个环境变量 用来记录POST数据的长度。

如果用PERL来写的CGI,获取POST参数的语句如下:

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);