Perl 教程 之 Perl CGI编程 10

简介: Perl CGI教程展示了如何通过CGI程序与HTML表单交互。当用户在HTML页面(test.html)中选择百度或Google并提交后,数据发送到CGI脚本(test.cgi)。脚本解析请求,获取选中的站点($site),然后生成返回的HTML响应,显示用户选择的网站。

Perl 教程 之 Perl CGI编程 10

Perl CGI编程

什么是CGI

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

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

通过CGI程序传递Radio数据

Radio 只向服务器传递一个数据,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;
}
$site = $FORM{site};

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

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

选择的网站 $site

";
print "";
print "";

1;

浏览器中,执行效果

目录
相关文章
|
4月前
|
存储 Android开发 数据安全/隐私保护
安卓手机和苹果手机如何快速完成文件互传?安卓手机文件传到苹果手机方法分享
在日常工作中,跨设备文件传输需求频繁,尤其是Android与iOS之间。本文推荐一款名为LocalSend的工具,支持Android、iOS、Windows、Mac平台,通过局域网实现快速、安全的文件互传,无需互联网连接。操作简便,界面直观,适合多设备用户使用。
1653 1
|
分布式计算 安全 算法
【重磅】中国隐私计算平台市场,摩斯第一
10月11日,全球领先的IT市场研究和咨询公司IDC发布了《中国隐私计算平台厂商市场份额,2022》报告。蚂蚁集团凭借商用隐私计算平台摩斯(MORSE),以 36.9%的市场份额排名第一。
【重磅】中国隐私计算平台市场,摩斯第一
|
Docker 容器
docker的导入本地镜像和导出本地镜像
本文介绍了如何使用Docker对本地镜像进行导入和导出操作,包括从本地导入`nginx.tar`镜像以及将`open-webui`镜像导出并压缩为`open-webui.tar.gz`。
1377 1
|
存储 SQL 数据库
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
这篇文章介绍了数据库中触发器的设计概念,包括创建、修改、删除触发器的方法,并通过实验内容教授如何使用SQL命令创建DML触发器以及如何利用触发器实现数据的完整性和自动化处理。
触发器的设计、掌握存储过程的基本概念和创建、执行、删除方法。掌握数据库备份的方法和数据库恢复的方法。
|
Web App开发 缓存 安全
Chrome浏览器启动参数大全
这是一组用于定制浏览器行为的命令行参数,包括但不限于:不停用过期插件、放行非安全内容、允许应用中心脚本、停用GPU加速视频、禁用桌面通知、禁用拓展及各类API、调整缓存设置、启用打印预览、隐身模式启动、设定语言、使用代理服务器、无头模式运行等。通过这些参数,用户可以根据需求灵活调整浏览器功能与性能。
|
缓存 开发框架 .NET
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
看看 Asp.net core Webapi 项目如何优雅地使用内存缓存
292 1
|
关系型数据库 API Go
[golang]在Gin框架中使用JWT鉴权
[golang]在Gin框架中使用JWT鉴权
312 0
|
机器学习/深度学习 存储 数据挖掘
基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
|
关系型数据库 MySQL 数据库
Win10安装两个不同版本MySQL数据库(一个5.7,一个8.0.17)
Win10安装两个不同版本MySQL数据库(一个5.7,一个8.0.17)
1399 0
Win10安装两个不同版本MySQL数据库(一个5.7,一个8.0.17)