CGI-Probleme. Ich bringe es nicht zum Laufen

Alles, was Perl betrifft, kann hier besprochen werden.

CGI-Probleme. Ich bringe es nicht zum Laufen

Postby Enfa » 17. January 2007 14:11

Hallo Allerseits,

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&auml;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&ouml;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/\&/\&amp;/g;
     $str =~ s/\</\&lt;/g;
     $str =~ s/\>/\&gt;/g;
     $str =~ s/\"/\&quot;/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
Enfa
 
Posts: 6
Joined: 05. December 2006 13:35

Postby Enfa » 17. January 2007 15:41

Ich habe gerade wieder versucht, das Programm laufen zubringen. Klappt leider nicht.

Wenn ich formular.pl in der Konsole starte, taucht dieser Fehler:

formular.pl: Can't find string terminator "END" anywhere before EOF at formular.pl line 44.

Ich benutze Windows 2000. Quellcode habe ich im Editor eingegeben.

Perl funktioniert auch. Nähmlich habe ich mit Schleifen etc gearbeitet. Es gabs keine Problem.

Danke.

Tschüss
Enfa
 
Posts: 6
Joined: 05. December 2006 13:35


Return to Perl

Who is online

Users browsing this forum: No registered users and 21 guests