Documente Academic
Documente Profesional
Documente Cultură
CGI
interogare
Browser
web
raspuns
page
Server
Interogare:
http://perl.hotmail.ru/page.html
Răspuns:
HTTP/1.0 200 OK
Date: Tue, 04 Apr 1999 12:27:49 GMT
Server: Apache/1.3.7 Meta - date
Content-type: text/html
Content-length: 100
Last-modified: Thu, 04 Apr 1999 12:23:51 GMT
<html>
<head>
<title>Perl в примерах</title>
</head> Conținut
<body> propriu - zis
<h2>Perl в примерах</h2>
. . . . . . .. . . .. . . .. .. . .. .
</body>
</html>
META-DATE
HTTP/1.0 200 OK
Date: Tue, 04 Apr 1999 12:27:49 GMT
Server: Apache/1.3.7
Content-type: text/html
Content-length: 100
Last-modified: Thu, 04 Apr 1999 12:23:51 GMT
ș. a.
META-DATE
HTTP/1.0 COD
COD
200 OK
204 No Content
301 Moved Permanently (to Location)
302 Moved Temporarily (to Location)
401 Unauthorized
404 Not found
500 Internal server error
META-DATE
Content-type:
text/plain
text/html
text/css
text/richtext
image/jpeg
image/x-xbitmap
audio/basic
ulaw-compressed audio/x-wav
video/quicktime
video/x-msvideo (avi-files)
application/javascript
META-DATE
Content-length: 100
Last-modified: Thu, 04 Apr 1999 12:23:51 GMT
Schema generala de interacţiune
între browser şi server prin CGI
CGI scripts
Browser
CGI web
interogare
page
Server raspuns
FORM
Utilizarea
• Contoare de vizitare;
• programe care genereaza sursa HTML
pentru lucruri simple precum scrierea
datei;
• generarea dinamica a imaginilor;
• generarea unor intregi pagini HTML;
• realizarea animaţiilor;
• prelucrarea datelor întroduse de utilizator
în formulare.
Limbaje
Aplicatiile CGI pot fi scrise in orice limbaj care poate fi
executat calculatorul care este server Web. Alegerea
limbajului depinde de tipul aplicatiei. Depinzand de tipul
si destinatia aplicatiei, precum si de indemanarea
programatorului (in diferitele limbaje), pentru aplicatiile
CGI se pot folosi limbajele:
• C
• C++
• Perl
• Python
• Shell scripts (UNIX)
• Visual Basic
• PHP
• ş. a.
Exemplu de un script scurt ce generează un
număr aleatoriu
#!/usr/local/miniperl/miniperl
print("Content-Type: text/html\n\n");
print("<HEAD><TITLE>Random Number Page</TITLE></HEAD>\n");
print("<BODY>\n");
srand;
$number = rand(100);
$number = substr($number,0,2);
http://test1.ru/cgi/random.cgi/
<body>
<h2>Exemplu de CGI script incadrat in pagina web</h2>
<img src="cgi-bin/random_img.pl">
<body>
<h2>Exemplu de CGI script
incadrat in pagina web</h2> random_img.pl
<img #!/usr/local/miniperl/miniperl
src="cgi-bin/random_img.pl"> @pic=('c0.png','c1.png','c2.png','c3.png');
srand;
<p> Desenul a fost selectat in mod $id=int(rand(4));
aleatoriu</p> $png='images/'.$pic[$id];
</body> print "Content-Type: image/png\n\n";
open G,$png;
binmode( G );
binmode( STDOUT );
print <G>;
close G;
exit;
Exemplu de document cu un script scurt ce
memorizează data, ora şi adresa accesului
la pagina dată
example1.html get_ip.cgi
$data="ipdata.txt";
<html>
open(D,">>$data");
<head> print D scalar localtime,' '.
<title>Test CGI</title> $ENV{'REMOTE_ADDR'}."\n";
</head> close(D);
<body>
$gif="524516516.gif";
<center><h3>Exemplu de pagina cu print "Content-Type: image/gif\n\n";
CGI script</h3> open(G,$gif);
<IMG print <G>;
src="http://test1.ru/cgi/get_ip.cg close(G);
i" height="1" width="1">
</body>
</html>
Exemplu de document cu un script scurt ce
memorizează data, ora şi adresa accesului
la pagina dată
Rezultat: ipdata.txt
CGI scripts
CGI
Browser
interogare web
page
Server raspuns
FORM
BD
BD
BD
Formular – tag form
• Exemple:
action="http://localhost/cgi-bin/primer.cgi"
action="http://test1.ru/cgi/otsenka.pl
action=“search1.php”
action="form_action.asp"
Atributele tag-ului form
• method - metoda prin care datele
întroduse de utilizator în formular vor fi
transferate serverului;
• Exemple:
method="get"
method=“post"
Metoda GET
• Transmite datele întroduse prin variabila
QUERY_STRING
• Se utilizează pentru transmiterea
informaţiei comparativ scurte
• Nu se utilizează pentru transmiterea
informaţiei importante (de exemplu,
parole)
• Informaţia ce se transmite este vizibilă în
bara de adrese a browserului
Metoda POST
• Transmite datele întroduse prin standard
input STDIN
• Se utilizează pentru transmiterea
informaţiei voluminoase
• Necesită cunoaşterea lungimii datelor
întroduse stocate în variabila
CONTENT_LENGTH
Atributele tag-ului form
• enctype – defineşte metoda de codificare a
datelor transmise. Valorile posibile:
• application/x-www-form-urlencoded – toate
caracterele sunt codificate înainte de transmitere
(default)
• multipart/form-data – Nimic nu se codifică (pentru
file upload)
• text/plain – Spaţii se înlocuiesc cu "+", alte
caractere nu se codifică
Exemplu de formular simplu
<html>
<head> <title>Test Form</title> </head>
<body>
<form action="demo_post_enctype.asp"
method="post" enctype="multipart/form-data">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Exemplu de formular simplu
<html>
<head> <title>Test Form</title> </head>
<body>
<form action="demo_post_enctype.asp"
method="post" enctype="multipart/form-data">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Exemplu de formular simplu
<html>
<head> <title>Test Form</title> </head>
<body>
<form action="demo_post_enctype.asp"
method="post" enctype="multipart/form-data">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Exemplu de formular simplu
<html>
<head> <title>Test Form</title> </head>
<body>
<form action="demo_post_enctype.asp"
method="post" enctype="multipart/form-data">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Exemplu de formular simplu
<html>
<head>
<title>Test Form</title>
</head>
<body>
<form method=“post" action="http://test/cgi/testform.cgi">
<b>Enter your name: </b>
<input name="user_name" value="" size=20>
<input type="submit" value="Submit">
</form>
</body>
</html>
testform.cgi
#!/usr/local/miniperl/miniperl # Send a message back to the user
print "Content-Type: text/html\n\n";
# checking the REQUEST_METHOD
print "<h3>Multumesc mult ";
if($ENV{'REQUEST_METHOD'} eq @pairs = split(/&/, $buffer);
'GET') foreach $pair (@pairs)
{ # metoda GET sau POST {
$buffer=$ENV{'QUERY_STRING'}; ($name, $value) = split(/=/, $pair);
} $value =~ tr/+/ /;
elsif($ENV{'REQUEST_METHOD'} eq $input{$name} = $value;
'POST') }
{ sysread(STDIN,$buffer, print " $input{'user_name'} ";
$ENV{'CONTENT_LENGTH'}); print " ca ai vizitat pagina mea!
} </h3>\n ";
print "Imi pare bine!";
Rezultat
Formular: http://test1.ru/form_example1.html
Variabila Semnificatie
SERVER_PORT Numarul portului pe care
browserul Web a trimis cererea
catre server.
http://localhost/prelucrarea.php?exemplu1=Numele&exemplu2=Parola&exemplu12=Ceva+text&exemplu10=Trimite
http://localhost/prelucrarea.php?
exemplu1=Numele&exemplu2=Parola&exemplu12=Ceva+t
ext&exemplu10=Trimite
<?php
<form name="myform"
action="prelucrarea.php" method="get"> $a=$_GET["exemplu1"];
<p> <input id="ex1" name="exemplu1" $f="<p>In primul cimp s-a
type="text" value="Camp de editare" introdus $a</p>\n";
size="25" maxlength="30"/> $b=$_GET["exemplu2"];
$f=$f."<p>Intr-a doilea
</p> cimp s-a introdus
<p> <input name="exemplu2" id="ex2" $b</p>\n";
type="password" value="Parola" size="15" $c=$_GET["exemplu12"];
maxlength="15"/></p> $f=$f."<p>Intr-a treilea
<p> <textarea cols="50" rows="8" cimp s-a introdus
name="exemplu12" id="ex12">Ceva $c</p>\n";
text</textarea></p> echo $f
<p> <input type="submit" name="exemplu10" ?>
id="ex10" value="Trimite"> </p>
</form>
http://localhost/prelucrarea.php
<?php
<form name="myform"
action="prelucrarea.php" method=“post"> $a=$_POST["exemplu1"];
<p> <input id="ex1" name="exemplu1" $f="<p>In primul cimp s-a
type="text" value="Camp de editare" introdus $a</p>\n";
size="25" maxlength="30"/> $b=$_ POST["exemplu2"];
$f=$f."<p>Intr-a doilea
</p> cimp s-a introdus
<p> <input name="exemplu2" id="ex2" $b</p>\n";
type="password" value="Parola" size="15" $c=$_
maxlength="15"/></p> POST["exemplu12"];
<p> <textarea cols="50" rows="8" $f=$f."<p>Intr-a treilea
name="exemplu12" id="ex12">Ceva cimp s-a introdus
text</textarea></p> $c</p>\n";
<p> <input type="submit" name="exemplu10" echo $f
id="ex10" value="Trimite"> </p> ?>
</form>
<form name="myform" action="prelucrarea.php" method="get">
<p>Întroduceţi vîrsta:<br/>
<input type="radio" name="raspuns" id="raspuns1" value="15"
checked="checked">sub 15 ani<br/>
<input type="radio" name="raspuns" value="15-20" id="raspuns2">15-20
ani<br/>
<input type="radio" name="raspuns" value="20-25" id="raspuns3">20-25
ani<br/>
<input type="radio" name="raspuns" value="25-35" id="raspuns4">25-35
ani<br/>
<input type="radio" name="raspuns" value="35-45" id="raspuns5">35-45
ani<br/>
<input type="radio" name="raspuns" value="45" id="raspuns6">peste 45
ani<br/> &nbs
p;
</p> <p> <input type="submit" name="exemplu10" id="ex10"
value="Trimite"> </p>
</form>
<form name="myform" action="prelucrarea.php" method="get">
<p> <input type="hidden" name="exemplu14" id="ex14"
value=“sondaj_vacanta"> </p>
<p>Unde vă petreceţi concediul de obicei?<br/>
<input type="checkbox" name="optiunea1" id="opt1" value="Mare">La
mare<br/>
<input type="checkbox" name="optiunea2" id="opt2" value="Munte">La
munte<br/>
<input type="checkbox" name="optiunea3" id="opt3" value="Strainatate">în
străinătate<br/>
<input type="checkbox" name="optiunea4" id="opt4" value="Tara">La
ţară<br/>
<input type="checkbox" name="optiunea5" id="opt5"
value="Acasa">Acasă<br/>
</p>
<p> <input type="submit" name="exemplu10" id="ex10" value="Trimite"></p>
</form>
//get parameters from URL
if(isset($_GET['exemplu14'])) {
$f=$f."Sondaj vacanța: ";
if(isset($_GET['optiunea1'])) {
$a="<p> A fost selectată opțiunea ".$_GET['optiunea1']."</p>\n";
$f = $f.$a;
}
if(isset($_GET['optiunea2'])) {
$a="<p> A fost selectată opțiunea ".$_GET['optiunea2']."</p>\n";
$f = $f.$a;
}
if(isset($_GET['optiunea3'])) {
$a="<p> A fost selectată opțiunea ".$_GET['optiunea3']."</p>\n";
$f = $f.$a;
}
<form name="myform" action="prelucrarea4.php" method="get">
<p>Alege un judet din România:<br/>
<select name="exemplu_select" id="ex_select">
<option value="Alba">Alba</option>
<option value="Arad">Arad</option>
<option value="Bucuresti" selected="selected">Bucureşti</option>
<option value="Buzau">Buzău</option>
<option value="Cluj">Cluj</option>
<option value="Vrancea">Vrancea</option>
</select>
</p>
<p> <input type="submit" name="exemplu10" id="ex10"
value="Trimite"></p>
</form>
<?php
$f="<html><head><meta charset='utf-8'></head><body>";
//get parameters from URL
$f=$f."<p>Județul: ";
$a=$_GET['exemplu_select']."</p>\n";
$f = $f.$a;
$f=$f."</body></html>";
echo $f
?>