📜  珀尔 | CGI 编程

📅  最后修改于: 2022-05-13 01:55:04.296000             🧑  作者: Mango

珀尔 | CGI 编程

在 Perl 中,CGI(通用网关接口)是一种通过 Web 请求执行脚本的协议。它是一组规则和标准,用于定义 Web 服务器和自定义脚本之间如何交换信息。早些时候,像 Perl 这样的脚本语言被用于编写 CGI 应用程序。并且,HTTP 服务器调用的 CGI 代码被称为 CGI 脚本。后来,网络的发展导致对动态内容的需求增加,通过这些内容,用其他语言而不是 Perl 编写的 CGI 应用程序变得更加流行和需求,并且仅被称为脚本。服务器如何执行脚本的细节由服务器确定。 CGI 应用程序几乎可以执行任何任务。例如,您可以访问数据库、保持 telnet 会话、即时创建网页和生成图形等。CGI 的概念非常简单,但创建 CGI 应用程序需要真正的编程技能。

什么是 CGI?

通用网关接口 (CGI) 只不过是一种协议,它定义了 Web 服务器与一些可执行程序的交互,以生成动态网页。基本上,它显示了 Web 服务器如何向程序发送信息,程序如何将信息发送回 Web 服务器,Web 服务器又可以发送回浏览器。在 web 服务器和外部程序之间,它被认为是标准的编程接口。
CGI 代表:

CGI 程序可以发送多种类型的数据或媒体,如文档、图像、音频剪辑等。大多数网站使用 CGI 和字段作为输入,并且 Web 上的动态内容交易主要使用 CGI 完成。它是一种方法,通过该方法,Web 服务器可以分别从/向数据库、文档和其他程序获取/发送数据,然后通过 Web 将这些数据呈现给查看者。

CGI 架构


在上图中,借助运行在客户端机器上的 HTTP(超文本传输协议)网络浏览器与网络服务器交换信息。由于 CGI 程序和 Web 服务器通常运行在 Web 服务器所在的同一系统上,根据来自浏览器的请求,Web 服务器要么从其自己的文档目录提供文档,要么执行 CGI 程序。

简单的 CGI 程序:
这是一个简单的程序来理解 Perl 中 CGI 编程的工作原理。在这里,我们将在 HTML 程序中获取输入,然后为生成的网页运行 CGI 脚本。
因为,HTML 决定了我们可以用来将用户数据传递给 CGI 程序的许多输入字段。这是利用这些输入字段(如文本字段、向下滚动列表、复选框和提交按钮)的 HTML 表单,用于将用户数据提交到 Web 服务器。



    GfG Test Example Form


    

CGI-Example Form

    

Information Required.

    
                                                                                                                                                                              
Name:         
Gender:
Profession:         
Sports:Cricket                 Hockey                 TableTennis                 Football
    
                    

注意: HTML 表单中的每个输入元素都有一个 name 属性,这在我们需要访问数据时很重要。而且,所有输入元素都在

标签内。除此之外, 标签中还有一个“action”属性,它决定了提交表单时将调用的 CGI 脚本。

上述形式的 Perl-CGI 脚本:

#!"c:\xampp\perl\bin\perl.exe"
  
use strict;
use CGI ':standard';
  
my $name = param('name');
my $gender = param('gender');
my $profession = param('profession');
my @sports = param('sport');
  
my $list;
  
if (@sports) 
{
    $list = join ', ', @sports;
} 
else 
{
    $list = 'Null';
}
  
print header,
start_html(-title=>$name),
h1("Hello, $name"),
h3 p('You have Submitted the following Data:'),
h4 table(Tr(td('Name:'),
h4 td($name)),
h4 Tr(td('Gender:'),
h4 td($gender)),
h4 Tr(td('Profession:'),
h4 td($profession)),
h4 Tr(td('Sports:'),
h4 td($list))),
end_html;

注意:提交表单后,我们将获得的网页如下所示。如果您注意到 Web 浏览器的 URL 框中,您将看到 URL 现在已更改。