Perl 教程 之 Perl CGI编程 9

简介: Perl CGI教程讲解了如何通过CGI程序处理HTML表单中的checkbox数据。在示例中,HTML表单包含两个checkbox(百度和Google),提交后,CGI脚本`test.cgi`读取并解析POST数据,判断每个选项是否被选中,并生成相应HTML响应显示选中状态。

Perl 教程 之 Perl CGI编程 9

Perl CGI编程

什么是CGI

CGI 目前由NCSA维护,NCSA定义CGI如下:

CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。

通过CGI程序传递checkbox数据

checkbox用于提交一个或者多个选项数据,test.html 代码如下:

test.html 代码
<!DOCTYPE html>


百度

Google





以下为 test.cgi 文件的代码:

test.cgi 代码

!/usr/bin/perl

local ($buffer, @pairs, $pair, $name, $value, %FORM);

读取信息

$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST")
{
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else {
$buffer = $ENV{'QUERY_STRING'};
}

读取 name/value 对信息

@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
if( $FORM{baidu} ){
$baidu_flag ="ON";
}else{
$baidu_flag ="OFF";
}
if( $FORM{google} ){
$google_flag ="ON";
}else{
$google_flag ="OFF";
}

print "Content-type:text/html\r\n\r\n";
print "

";
print "";
print '';
print '';
print "";
print "";
print "

百度选中状态 : $baidu_flag

";
print "

Google 选择状态 : $google_flag

";
print "";
print "";

1;

浏览器中,执行效果

目录
相关文章
|
Kubernetes 安全 网络协议
基于 Traefik 的激进 TLS 安全配置实践
基于 Traefik 的激进 TLS 安全配置实践
|
存储 弹性计算 移动开发
玩机教程:阿里云电脑无影怎么样?怎么使用?
玩机教程:阿里云电脑无影怎么样?怎么使用?
1046 0
|
10月前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
消息中间件 中间件 Kafka
中间件发布/订阅模型
【7月更文挑战第9天】
252 1
中间件发布/订阅模型
|
消息中间件 Kubernetes 数据库
在k8S中,初始化容器(init container)概念原理是什么?
在k8S中,初始化容器(init container)概念原理是什么?
|
存储 算法
HanLP — Aho-Corasick DoubleArrayTire 算法 ACDAT - 基于双数组字典树的AC自动机
HanLP — Aho-Corasick DoubleArrayTire 算法 ACDAT - 基于双数组字典树的AC自动机
248 0
|
Kubernetes 网络协议 Linux
使用kubeadm部署高可用IPV4/IPV6集群
使用kubeadm部署高可用IPV4/IPV6集群
382 5
|
存储 数据挖掘 数据库
数据库是什么?为什么要使用它么?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。它通常与数据库管理系统(DBMS)一起使用,用于创建、查询、更新和管理数据库中的数据。
976 0
|
Web App开发 JavaScript 前端开发
CocosCreator3.8研究笔记(二)windows环境 VS Code 编辑器的配置
CocosCreator3.8研究笔记(二)windows环境 VS Code 编辑器的配置
653 0
解决2022Visual Studio中scanf返回值被忽略问题
解决2022Visual Studio中scanf返回值被忽略问题