.


:




:

































 

 

 

 


CGI




CGI . Web - CGI - cgi-bin, . CGI URL . , test.pl web - , URL: http://localhost/cgi-bin/test.pl. cgi-bin , , : /usr/local/etc/httpd/cgi-bin/test.pl /website/cgi-shl/test.pl.

CGI . ,

<A HREF="cgi-bin/test.pl">Click here to run a CGI program</A>

CGI , URL. <A HREF="cgi-bin/search.pl/root/document"> Search the Document Directory</A>

PATH_INFO.

<A HREF="cgi-bin/search.pl?Wine+1993">Search for 1993 Wines</A>

QUERY_STRING.

CGI :

#!/usr/local/bin/perl -w

use strict;

print "Content-type: text/plain\n\n";

print "Hello, World.\n";

test.pl cgi-bin web . URL : http://localhost/cgi-bin/test.pl

: Hello, World.

CGI STDIN - HTML , STDOUT - , STDERR - log - .

CGI HTTP, STDOUT: print("Content Type: text/html\n\n");

, Location : print("Location: $nextPage\n\n");

CGI

CGI %ENV. :

CONTENT_LENGTH - , STDIN . POST.

CONTENT_TYPE - , STDIN.

HTTP_ACCEPT - MIME

HTTP_USER_AGENT -

HTTP_FROM - email .

PATH_TRANSTLATED -

REMOTE_ADDR -

REMOTE_HOST - .

REMOTE_USER - .

REQUEST_METHOD - "GET" "POST"

SCRIPT_NAME - .

SERVER_NAME .

SERVER_PORT - , 80.

SERVER_PROTOCOL .

URL

, , :

<1>=<1>&<2>=<2>&<3>=<3>

X , NAME, X , . ( , , , , , ), <>=<> &.

GET URL, , URL , , URL , (/), POST. Web- , . , +. (HEX) , %. Ivan Ivankov [email protected] : Ivan+Ivankov+%[email protected] %3E. < %3C, > %3E. CGI .

 

<INPUT> submit, CGI . :

<INPUT TYPE=submit VALUE="Process Information">

:

<FORM METHOD =GET> <FORM METHOD =POST>. : <FORM METHOD=get ACTION=/cgi-bin/gestbook.pl>

GET URL, ACTION, . QUERY_STRING CGI . POST , STDIN. , CONTENT_LENGTH. METHOD=GET. REQUEST_METHOD. :

sub getFormData {

my($buffer) = "";

if ($ENV{'REQUEST_METHOD'} eq 'GET') {

$buffer = $ENV{'QUERY_STRING'};# GET

}

else {# POST

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

}

}

$buffer.

name=value, (&).

name=Ivan+Ivankov&age=34

, & :

name=Ivan+Ivankov

age=34

=:

Field Name: name Field Value: Ivan+Ivankov

Field Name: age Field Value: 34

, , , getFormData(). split() decodeURL().

my(%frmFlds);

getFormData(\%frmFlds);

sub getFormData {

my($hashRef) = shift;

my($buffer) = "";

if ($ENV{'REQUEST_METHOD'} eq 'GET') {

$buffer = $ENV{'QUERY_STRING'};

}

else {

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

}

foreach (split(/&/, $buffer)) {

my($key, $value) = split(/=/, $_);

$key = decodeURL($key);

$value = decodeURL($value);

%{$hashRef}->{$key} = $value;

}

}

sub decodeURL {

$_ = shift;

tr/+/ /;

s/%(..)/pack('c', hex($1))/eg;

return($_);

}

HTML- :

<!-- HTML--->

<FORM METHOD=POST ACTION=/cgi-bin/guestbook.cgi>

<BLOCKQUOTE>

<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>

<TR> <TD COLSPAN=2> <BR> <BR>

</TD> </TR>

<TR> <TD> : </TD>

<TD><INPUT TYPE=text NAME=signer SIZE=40></TD>

</TR>

<TR> <TD>E-Mail: </TD>

<TD><INPUT TYPE=text NAME=email SIZE=40></TD>

</TR>

<TR> <TD>: </TD>

<TD><INPUT TYPE=text NAME=city SIZE=20></TD>

</TR>

<TR> <TD>Home Page URL: </TD>

<TD> <INPUT TYPE=text NAME=url SIZE=40 VALUE=http://>

</TD> </TR>

<TR>

<TD COLSPAN=2>:<BR>

<TEXTAREA NAME=comments COLS=40 ROWS=4>

</TEXTAREA><BR>

<INPUT TYPE=submit VALUE=PostIt!></TD>

</TR> </TABLE>

</BLOCKQUOTE>

</FORM>

submit. . <FORM> : METHOD, , ACTION, URL CGI-. POST , GET. , , <TEXTAREA>, . POST:

ACTION=http://www.server.com/cgi-bin/script.cgi

, Web-, . <INPUT>, <FORM> <TEXTAREA> . <INPUT>, <FORM>, : NAME, TYPE VALUE. :

<INPUT TYPE=text NAME=emailVALUE=@>

<INPUT TYPE=submit NAME=buttonVALUE=PostIt!>

(TYPE=text), (TYPE=submit). (TYPE=reset). TYPE NAME . . <INPUT> VALUE. , . , VALUE=@ , @.

, , PostIt, !

#!/usr/local/bin/perl

&GetFormInput;

$Name=$field{name};

$Email=$field{email};

$City=$field{city};

$Url=$field{url};

$Comments=$field{comments};

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

&Title;

print <B>Name: $Name</B><BR>\n

<B>Email:</B>

<A HREF=\mailto:$Email\>$Email</A><BR>\n

<B>City:</B> $City<BR>\n

<B>Url:</B>

<A HREF=\$Url\>$Url</A><BR>\n

<B>Comments:</B> $Comments<BR>\n;

sub GetFormInput {

(*fval) = @_ if @_;

local ($buf);

if ($ENV{REQUEST_METHOD} eq POST) {

read(STDIN,$buf,$ENV{CONTENT_LENGTH});

}

else {

$buf=$ENV{QUERY_STRING};

}

if ($buf eq ) {

return 0;

}

else {

@fval=split(/&/,$buf);

foreach $i (0.. $#fval){

($name,$val)=split (/=/,$fval[$i],2);

$val=~tr/+/ /;

$val=~ s/%(..)/pack(c,hex($1))/ge;

$name=~tr/+/ /;

$name=~ s/%(..)/pack(c,hex($1))/ge;

if (!defined($field{$name})) {

$field{$name}=$val;

}

else {

$field{$name}.= ,$val;

#if you want multi-selects to goto into an array change to:

#$field{$name}.= \0$val;

}

}

}

return 1;

}

 

sub Title {

print <H2>Simple GuestBook</H2><P>\n;

return 1;

}

HTML-. GET, CGI- .

POST, CGI-. : &GetFormInput, , . print Content-type:text/html\ n\n MIME- ( HTML-), &Title Simple Guestbook Web- HTML-.

- .

CGI- . , , . Perl CGI-LIB.PL CGI.PM. Perl-. CGI-LIB.PL .

: require ../cgi-lib.pl;

. , :

require ../mylib.pl;

, . . : &Parse_Data;

- ( , , ), $field{ } $CGI{ }.

#

#!/usr/local/bin/perl

require 'cgi_lib.pl';

&Parse_Data;

$Name=$CGI{'name'};

$Email=$CGI{'email'};

$City=$CGI{'city'};

$Url=$CGI{'url'};

@Comments=$CGI{'comments'};

#

$c=0;

foreach (@Comments) {

$Comments[$c] =~ s/\n/ /g;

chomp($Comments[$c]);

$q=$Comments[$c]+$Desc[$c];

$q = ~ s/\n/ /g;

$c++;

}

$file="guestbook";

$dbase="../";

open (F, "+>>$dbase/$file") || die "Error of adding a record

$!\n";

print F join ("::","$Name", "$Email", "$City", "$Url",

"@Comments"),"\n";

$i=1;

foreach (@F) {

print F $_;

$i++;

}

close (F);

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

&Title;

print "<B>Name: $Name</B><BR>\n

<B>Email:</B> <A HREF=\"mailto:$Email\">$Email</A><BR>\n

<B>City:</B> $City<BR>\n

<B>Url:</B> <A HREF=\"$Url\">$Url</A><BR>\n

<B>Comments:</B> $Comments<BR>\n";

CGI- . (Append), .

Web -

web ? Web Apache 127.0.0.1 "http://localhost". . (Request).

Apache . config.conf, , , , -f "path", path *.cfg. Apache Server - . "Install to" , z:\home\web_server. Apache MakeConf.exe. MakeConf.exe , , , : : "z:/home/web_server".

Apache start_apache.cmd, stop.cmd. , error.log access.log logs.





:


: 2016-07-29; !; : 1238 |


:

:

- - , .
==> ...

1825 - | 1775 -


© 2015-2024 lektsii.org - -

: 0.075 .