Perl 教程 之 Perl CGI编程 12

简介: Perl CGI教程介绍如何通过CGI程序处理HTML表单数据。当用户从一个包含下拉选项(如百度和Google)的HTML表单提交选择后,CGI脚本`test.cgi`读取并解析POST请求中的数据。脚本将选定的值(如"百度"或"Google")存储在变量 `$site` 中,并生成一个显示所选网站的简单HTML响应。

Perl 教程 之 Perl CGI编程 12

Perl CGI编程

什么是CGI

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

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

通过 CGI 程序传递下拉数据

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;
}
$site = $FORM{dropdown};

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

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

选择的网站是:$site

";
print "";
print "";

1;

浏览器中,执行效果

目录
相关文章
|
算法 C语言
C语言的伪代码结构
C语言的伪代码结构
323 1
|
Java Maven
SpringBoot项目如何打包、部署
SpringBoot项目如何打包、部署
280 0
|
传感器 人工智能 监控
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
1087 6
奈氏准则、香农公式、最大码元速率与最大信息速率
奈氏准则、香农公式、最大码元速率与最大信息速率
2664 0
|
缓存 Android开发 Kotlin
【安卓app开发】kotlin Jetpack Compose框架 | 先用OKhttp下载远程音频文件再使用ExoPlayer播放
使用 Kotlin 的 Jetpack Compose 开发安卓应用时,可以结合 OkHttp 下载远程音频文件和 ExoPlayer 进行播放。在 `build.gradle` 添加相关依赖后,示例代码展示了如何下载音频并用 ExoPlayer 播放。代码包括添加依赖、下载文件、播放文件及简单的 Compose UI。注意,示例未包含完整错误处理和资源释放,实际应用需补充这些内容。
|
存储 网络协议 算法
|
存储 Linux 程序员
【Linux-14】进程地址空间&虚拟空间&页表——原理&知识点详解
【Linux-14】进程地址空间&虚拟空间&页表——原理&知识点详解
|
算法
计算机网络:CSMA/CA协议
计算机网络:CSMA/CA协议
1826 9
|
安全 网络安全 API
kotlin安卓开发JetPack Compose 如何使用webview 打开网页时给webview注入cookie
在Jetpack Compose中使用WebView需借助AndroidView。要注入Cookie,首先在`build.gradle`添加WebView依赖,如`androidx.webkit:webkit:1.4.0`。接着创建自定义`ComposableWebView`,通过`CookieManager`设置接受第三方Cookie并注入Cookie字符串。最后在Compose界面使用这个自定义组件加载URL。注意Android 9及以上版本可能需要在网络安全配置中允许第三方Cookie。