was Perl angeht, steht ja viel im Internet. Da habe ich ein Beispiel kopiert.
Eine HTML-Datei und die Andere ist ein CGI-Datei.
Die erste Frage ist:
Benötigt man unbedingt für CGI einen Web-Server auf dem Rechner? Für Lernzwecke möchte ich ohne Web-Server einfache Beispiele in CGI entwickeln.
Nun zu mein Beispiel:
meine HTML-Datei "formular.html" sieht so aus:
- Code: Select all
<HTML>
<HEAD>
<TITLE>Formular</TITLE>
</HEAD>
<BODY>
<FORM ACTION="C:/Perlbeispiele/Fahrrad/formular.pl" METHOD="POST"
ENCTYPE="multipart/form-data" NAME="form1">
<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" WIDTH="100%">
<TR>
<TD VALIGN="TOP" BGCOLOR="silver">
<H3>Text-Feld</H3>
<INPUT TYPE="TEXT" NAME="Postleitzahl" MAXLENGTH="5">
</TD>
<TD VALIGN="TOP" BGCOLOR="#FFFF66">
<H3>Passwort-Feld</H3>
<INPUT TYPE="PASSWORD" NAME="Passwort">
</TD>
</TR>
<TR>
<TD VALIGN="TOP" BGCOLOR="#FFFF66">
<H3>verstecktes Feld</H3>
<INPUT TYPE="HIDDEN" NAME="Session"
VALUE="14d7-8047954-4794ab0">
</TD>
<TD VALIGN="TOP" BGCOLOR="silver">
<H3>Perl-Datei hochladen</H3>
<INPUT TYPE="FILE" NAME="Datei" MAXLENGTH="1000">
</TD>
</TR>
<TR>
<TD VALIGN="TOP" BGCOLOR="silver">
<H3>CHECKBOX-Felder</H3>
Programmieren Sie in <BR>
<INPUT TYPE="CHECKBOX" NAME="Fach" VALUE="Java">
Java? <BR>
<INPUT TYPE="CHECKBOX" NAME="Fach" VALUE="Perl" CHECKED>
Perl? <BR>
<INPUT TYPE="CHECKBOX" NAME="Fach" VALUE="Python">
Python?
</TD>
<TD VALIGN="TOP" BGCOLOR="#FFFF66">
<H3>RADIO-Felder</H3>
Sind Sie <BR>
<INPUT TYPE="RADIO" NAME="Geschlecht" VALUE="w">
weiblich? <BR>
<INPUT TYPE="RADIO" NAME="Geschlecht" VALUE="m">
männlich?
</TD>
</TR>
<TR>
<TD VALIGN="TOP" BGCOLOR="#FFFF66">
<H3>SELECT MULTIPLE</H3>
<SELECT NAME="Schwierigkeit" MULTIPLE>
<OPTION>leicht</OPTION>
<OPTION>mittel</OPTION>
<OPTION>schwer</OPTION>
</SELECT>
</TD>
<TD VALIGN="TOP" BGCOLOR="silver">
<H3>SELECT</H3>
<SELECT NAME="Note">
<OPTION>1.0</OPTION>
<OPTION>2.0</OPTION>
<OPTION SELECTED>3.0</OPTION>
<OPTION>4.0</OPTION>
<OPTION>5.0</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD VALIGN="TOP" BGCOLOR="silver">
<H3>SUBMIT mit Knöpfen</H3>
<INPUT TYPE="SUBMIT" NAME="Button" VALUE="so">
<INPUT TYPE="SUBMIT" NAME="Button" VALUE="oder so">
</TD>
<TD VALIGN="TOP" BGCOLOR="#FFFF66">
<H3>SUBMIT mit einem Fahrrad</H3>
<INPUT TYPE="IMAGE" NAME="Fahrrad" SRC="fahrrad.png"
ALT="Mein Fahrrad">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
meine Perl-Datei "formular.pl" sieht so aus:
- Code: Select all
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
########################################################################
# HTML Anfang
########################################################################
print <<END;
Content-type: text/html
<html>
<head><title>CGI-Parameter</title></head>
<body bgcolor="#ffff55">
<h2>CGI-Parameter</h2>
END
########################################################################
# Parameter ausgeben
########################################################################
print Dump();
########################################################################
# File-Inhalt ausgeben
########################################################################
print qq(<hr>);
my $fname = param("Datei");
my $mime = uploadInfo($fname)->{"Content-Type"};
print qq(<h2>Datei: "$fname"</h2>);
print qq(<h3>Mimetyp: "$mime"</h3>);
if ( $fname =~ /\.pl$/ ) {
print qq(<pre>);
foreach my $z ( <$fname> ) { print maskiere($z); }
print qq(</pre>);
}
########################################################################
# HTML Ende
########################################################################
print <<END;
</table>
</body>
</html>
END
########################################################################
# maskiere
# maskiert HTML-Sonderzeichen
########################################################################
sub maskiere {
my $str = shift;
$str =~ s/\&/\&/g;
$str =~ s/\</\</g;
$str =~ s/\>/\>/g;
$str =~ s/\"/\"/g;
$str;
}
Sobald ich auf die Knöpfe betätige, dann zeig der mir den Perl-Syntaxcode.
Wenn ich per KOnsole das Perl-Datei starte, dann zeigt der mir ein Fehler.
Irgendwas mit "END" erkennt er nett oder so.
Ihr könnt als Spass halbar die Code's kopieren und ausführen.
Wo liegt bitte mein Fehler?
Ich komm nicht weiter.
Vielen Dank im Voraus.
Mit freundlichem Gruß,
Enfa