cgi实现html控件值为上一次所提交的值
时间: 2024-05-06 16:17:42 浏览: 84
CGI(公共网关接口)是一种用于Web服务器和其他程序之间通信的标准协议。它的作用是将HTTP请求传递给Web服务器,然后将响应返回给客户端。
如果您想要实现HTML控件的值为上一次提交的值,您可以使用CGI来处理表单数据。具体步骤如下:
1. 在HTML表单中添加一个隐藏的输入字段,用于存储上一次提交的值,例如:
```
<input type="hidden" name="last_value" value="$previous_value">
```
其中,$previous_value是前一次提交的值。
2. 在CGI脚本中,获取上一次提交的值,并将其赋值给相应的HTML控件,例如:
```
#!/usr/bin/perl
use CGI qw(:standard);
# 获取上一次提交的值
my $previous_value = param('last_value');
# 将上一次提交的值赋值给HTML控件
print header,
start_html('Previous Value'),
"<input type='text' name='input_field' value='$previous_value'>",
end_html;
```
这样,每次提交表单时,上一次提交的值就会自动填充到HTML控件中。
相关问题
用C语言实现cgi改写html控件值为上一次所提交的值
实现这个功能,需要在服务端保存用户上一次提交的值,并在下一次请求时将该值回显到页面中。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
// 读取POST请求中的数据
char *content_length_str = getenv("CONTENT_LENGTH");
int content_length = atoi(content_length_str);
char *post_data = malloc(content_length + 1);
fgets(post_data, content_length + 1, stdin);
// 解析POST请求中的数据,获取表单值
char *name_pos = strstr(post_data, "name=");
char *value_pos = strstr(post_data, "value=");
char name[256];
char value[256];
sscanf(name_pos, "name=%s", name);
sscanf(value_pos, "value=%s", value);
// 读取上一次提交的值
char *last_value = getenv("QUERY_STRING");
// 输出HTML页面
printf("Content-type:text/html\n\n");
printf("<html>\n");
printf("<head>\n");
printf("<title>C语言CGI回显表单值</title>\n");
printf("</head>\n");
printf("<body>\n");
if (last_value) {
printf("<p>上一次提交的值为:%s</p>\n", last_value);
}
printf("<form method=\"post\">\n");
printf("<input type=\"text\" name=\"%s\" value=\"%s\">\n", name, last_value ? last_value : "");
printf("<input type=\"submit\" value=\"提交\">\n");
printf("</form>\n");
printf("</body>\n");
printf("</html>\n");
// 保存本次提交的值
setenv("QUERY_STRING", value, 1);
free(post_data);
return 0;
}
```
这个CGI程序会将用户提交的表单值回显到页面中,并且在下一次请求时将上一次提交的值作为表单默认值显示出来。需要注意的是,这个示例代码没有进行输入合法性验证和错误处理,仅供参考。
阅读全文