5.44. Perl CGI programming

发布时间 :2023-10-20 23:00:03 UTC      

5.44.1. What is CGI? #

CGI is currently maintained by NCSA. NCSA defines CGI as follows:

CGI (Common Gateway Interface), a universal gateway interface, is a program that runs on a server, such as a HTTP server, and provides an interface withclient HTML pages.

5.44.2. Web browsing #

To better understand how CGI works, we can start from clicking a link or URLprocess on a web page:

  • 1.Use your browser to access URL and connect to the HTTP web server.

  • 2.After receiving the request information, the Web server parses the URL and finds whether the accessed file exists on the server. If there is a content of the returned file, an error message is returned.

  • 3.The browser receives information from the server and displays the received files or error messages.

CGI programs can be Python scripts, PERL scripts, SHELL scripts, C or C++ programs, etc.

5.44.3. CGI architecture diagram #

Image0

5.44.4. Web server support and configuration #

Before you do CGI programming, make sure your Web server supports CGI and isconfigured with CGI handlers.

Apache supports CGI configuration:

Set up the CGI directory:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

All HTTP server execution CGI programs are saved in a preconfigured directory. This directory is called the CGI directory, and by convention, itis named /var/www/cgi-bin catalogue.

The extension of the CGI file is .cgi Perl can also be used .pl extension name.

By default, the Linux server configures the cgi-bin in the directory for /var/www .

If you want to specify a different directory to run the CGI script, you can modify it httpd.conf configuration file, as follows:

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory>

In AddHandler Add in .pl suffix so that we can access the .pl of the Perl script file at the end:

AddHandler cgi-script .cgi .pl .py

5.44.5. The first CGI program #

Let’s create a test.cgi file, the code is as follows:

Test.cgi code #

#/ Usr/bin/perlprint "Content type: text/html r n r n"; Print '<HTML>'; Print '<head>'; Print '<meta
Charset="utf-8">'; Print '<title>Rookie Tutorial (runoob. com)</title>'; Print '</head>'; Print '<body>'; Print '<h2>Hello
Word</ H2>'; From the first CGI in the rookie tutorial
Program</ p> '; Print '</body>'; Print '</html>'; 1;

Then open http://localhost/cgi-bin/test.cgi through a browser, and the output is as follows:

Image1

The output attribute of the first line of the script "Content-type:text/html\r\n\r\n" is sent to the browser, and the browser is informed that the displayed attribute type is text/html``

5.44.6. HTTP header #

In the attributes of the test.cgi file "Content-type:text/html" . That is, part of the HTTP header, which is sent to the browser to tell the browser the content type ofthe file.

The format of the HTTP header is as follows:

HTTP Field Name: Field Properties

For example:

Content-type:text/html\r\n\r\n

Principles, Technologies, and Methods of Geographic Information Systems  102

In recent years, Geographic Information Systems (GIS) have undergone rapid development in both theoretical and practical dimensions. GIS has been widely applied for modeling and decision-making support across various fields such as urban management, regional planning, and environmental remediation, establishing geographic information as a vital component of the information era. The introduction of the “Digital Earth” concept has further accelerated the advancement of GIS, which serves as its technical foundation. Concurrently, scholars have been dedicated to theoretical research in areas like spatial cognition, spatial data uncertainty, and the formalization of spatial relationships. This reflects the dual nature of GIS as both an applied technology and an academic discipline, with the two aspects forming a mutually reinforcing cycle of progress.