CGI програмиране

Лектори
Георги Пенков gpenkov@phreedom.org
Марин Маринов mmarinov@phreedom.org
Петър Пенчев roam@ringlet.net
Николай Бачийски nbachiyski@developer.bg
Уеб страница
http://perl.phreedom.org/

Какво е CGI

CGI срещу PHP/ASP/JSP/… (1/3)

CGI срещу PHP/ASP/JSP/… (2/3)

CGI срещу PHP/ASP/JSP/… (3/3)

Изход на CGI приложението (1/2)

Изход на CGI приложението (2/2)

Типове заявки (1/2)

Типове заявки (2/2)

GET заявки (1/2)

GET заявки (2/2)

Пример: printenv (1/2)

  • #!/usr/bin/perl -wT use strict; my ($q, $s, $len, @vars); @vars = sort keys %ENV; $s = ''; $q = $ENV{'QUERY_STRING'}; if (defined($q) && length $q) { my %v; foreach (split /\&/, $q) { my ($var, $val) = split /=/, $_, 2; $var =~ tr/+/ /; $val =~ tr/+/ /; $var =~ s/\%([0-9A-F]{2})/@{[pack("H*", $1)]}/gix; $val =~ s/\%([0-9A-F]{2})/@{[pack("H*", $1)]}/gix; $v{$var} = $val if (defined($var) && defined($val)); } if (defined($v{'vars'})) { @vars = grep /^\Q$v{vars}\E/, @vars; } }
  • Пример: printenv (2/2)

  • $s .= join '', map { "$_=$ENV{$_}\n" } @vars; { use bytes; $len = length $s; }; print "Content-Type: text/plain\nContent-Length: $len\n\n$s";
  • POST заявки

    POST заявки с multipart съдържание

    CGI на Perl със CGI.pm (1/2)

    CGI на Perl със CGI.pm (2/2)

    Пример: printenv-cgi

  • #!/usr/bin/perl -wT use strict; use CGI; my ($cgi, $prefix, $s, $len, @vars); @vars = sort keys %ENV; $cgi = new CGI(); $prefix = $cgi->param('vars'); if (defined($prefix)) { @vars = grep /^\Q$prefix\E/, @vars; } $s .= join '', map { "$_=$ENV{$_}\n" } @vars; { use bytes; $len = length $s; } print "Content-Type: text/plain\nContent-Length: $len\n\n$s";