CGI Einführung



CGI 6 - Queries

Vorheriges KapitelZurück zum IndexNächstes Kapitel

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 Siehe Kapitel 3. 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.


Programmquelltext herunterladen (Rechtsklick => Speichern Unter)   Programm auf diesem Webserver ausführen.

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>




Vorheriges KapitelZurück zum IndexNächstes Kapitel