{Perl_CGI_Einführung}

MuWeb CGI Einführung Privat
 
00 Index
01 Vorwort
02 Kickstart
03 Hello World
04 Variablen
05 Arrays
06 Queries
07 Vergleiche
08 Schleifen
09 Dateien
10 Reg_Exp
11 Strings
12 Subs
13 Links

CGI 6 - Queries

Sie haben nun die Grundfähigkeiten um ein kleines Programm zu schreiben - Noch jedoch ein sehr isoliertes Programm da es keine Nutzereingaben nutzen kann.


Unterkapitelindex

6.1 Was sind Queries überhaupt?
6.2 Allgemeines zu Queries
6.3 Arbeiten mit Queries & Beispiel




6.1 Was sind Queries überhaupt?
Queries sind Nutzereingaben die über ein HTML Formular gemacht werden. Zum testen können Sie ihr Programm auch über

http://www.host.de/cgi-bin/test.cgi?eingabe=test

aufrufen.




6.2 Allgemeines zu Queries
Für Queries benötigen Sie das CGI Modul. Wenn Sie dies eingebunden haben ist es sehr einfach, die Queries abzurufen:

01
02
03
04
05
06
07

use CGI;

my $cgi = new CGI;
my $q = $cgi->param('eingabe');

unless ($q =~ /^[\w .!?-]+$/){die;}
print $q;

Die erste Zeile weist den Interpreter an das CGI Modl zu nutzen. In der zweiten Zeile wird der Variable $cgi das CGI Modul zugewiesen. In der dritten Zeile wird $q der Wert "eingabe" der über einen HTTP Query kam zugewiesen. In der fünften Zeile wird die Nutzereingabe auf "vergiftete" Variablen geprüft - Sollte die Eingabe des Nutzers destruktiv (Hacker etc.) sein beendet sich das Programm (Befehl dafür ist "die"). Da wir den Taint Modus nutzen ist das obligatorisch. Ist die Nuterzeingabe nicht destruktiv so wird in der sechsten Zeile der Wert ausgegeben.

Ein HTML Formular für dieses Skript könnt bspw. so aussehen:

01
02
03

<form action="datei.cgi" method="post">
Eingabe: <input type="text" name="eingabe"> <input type=submit>
</form>

Das Skript würde nun den Text den der Nutzer eingibt ausgeben.



6.3 Arbeiten mit Queries & Beispiel
Das Arbeiten mit Queries ist sehr einfach - Sie werden wie ganz normale Variablen behandelt.

  

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

#!/usr/bin/perl -wT

use strict;
use CGI;

my $cgi = new CGI;
print $cgi->header;

print <<"EOF";
Content-Type:text/html


<html>
<head><title>Rechner</title></head>
<body>
EOF

my $x = $cgi->param('x');
my $y = $cgi->param('y');
my $z = $x + $y;

unless ($x =~ /^[\w .!?-]+$/ ){die;} # "Hacker" ausfiltern
unless ($y =~ /^[\w .!?-]+$/ ){die;} # "Hacker" ausfiltern

print "$x + $y = $z";

print "</body>\n</html>";


Hier wird anstatt der direkten Ausgabe von "Content-type:text/html\n\n" das CGI Modul mit dem Aufruf "$cgi->header" aufgerufen. Das trägt enorm zur Lesbarkeit ihres Codes bei und sollte immer getan werden.

Das Programm addiert die Eingabe a und b - Stellt also einen einfachen Taschenrechner dar. Hier der dazu nötige HTML Code:

01
02
03
04
05
06
07
08
09

<html>
<head><title>Taschenrechner</title></head>
<body>
<form method="post" action="cgi-bin/test.cgi">
<input type="text" name="a"> + <input type="text" name="b"> <input type="submit" value="Berechnen">
</form>
</body>
</html>