Marcel Schlesinger: HTTP 405

Hi Leute,

ich bin gerade mal beim anfang von cgi. Hab da mal eine Html-Datei mit folgendem inhalt geschrieben:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Kommentarseite</title>
</head>
<body bgcolor="#E0E0E0">
<h1>Ihr Kommentar</h1>
<form action="cgi-bin/comments.pl" method="post">
<p>Name:<br><input size="40" maxlength="40" name="AnwenderName"></p>
<p>Text:<br><textarea rows="5" cols="50" name="Kommentartext"></textarea></p>
<p><input type="submit" value="Absenden"></p>
</form>
</body>
</html>

Jetzt hab ich eine dazu gehörige comments.pl geschrieben:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});
my @Formularfelder = split(/&/, $Daten);
my ($Feld, $Name, $Wert);
my %Formular;
foreach $Feld (@Formularfelder) {
  (my $Name, my $Wert) = split(/=/, $Feld);
  $Wert =~ tr/+/ /;
  $Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $Wert =~ s/</</g;
  $Wert =~ s/>/>/g;
  $Formular{$Name} = $Wert;
 }
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>CGI-Feedback</title></head>\n";
print "<body><h1>CGI-Feedback vom Programm <i>comments.pl</i></h1>\n";
print "<p><b>Name:</b> $Formular{AnwenderName}</p>\n";
print "<p><b>Kommentartext:</b> $Formular{Kommentartext}</p>\n";
print "</body></html>\n";

Wenn ich die HTML-Datei aufrufe und auf "Absenden" klicke dann kommt HTTP 405 als Fehler. Hab mal statt post get genutzt, aber da kommt der selbe Fehler, was kann ich dagegen tun?
Könnt ihr mir helfen?
Ich hab die Dateien bei tripod hochgeladen, falls es nützlich ist.

Vielen lieben Dank schonmal im Vorraus

Marcel Schlesinger =)

  1. Moin Moin !

    Jetzt hab ich eine dazu gehörige comments.pl geschrieben:

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});
    my @Formularfelder = split(/&/, $Daten);

    Laß den Quatsch! So funktioniert das nur leidlich mit POST-Requests. Nutze das CGI-Modul.

    print "Content-type: text/html\n\n";

    Falsch! HTTP fordert CR+LF, nicht nur LF. Nutze das CGI-Modul, das erspart Dir diese Fehler.

    Wenn ich die HTML-Datei aufrufe und auf "Absenden" klicke dann kommt HTTP 405 als Fehler. Hab mal statt post get genutzt, aber da kommt der selbe Fehler, was kann ich dagegen tun?
    Ich hab die Dateien bei tripod hochgeladen, falls es nützlich ist.

    Darfst Du bei tripod eigene CGIs ausführen?

    Alexander

    --
    Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
  2. Hi,

    #!/usr/bin/perl -w

    use strict;
    use CGI::Carp qw(fatalsToBrowser);

    Wenn Du hier das CGI-Modul benutzt...

    read(STDIN, my $Daten, $ENV{'CONTENT_LENGTH'});

    warum benutzt Du es dann nicht für die Parameter?

    my @Formularfelder = split(/&/, $Daten);

    Wenn ich die HTML-Datei aufrufe und auf "Absenden" klicke dann kommt HTTP 405 als Fehler. Hab mal statt post get genutzt, aber da kommt der selbe Fehler, was kann ich dagegen tun?

    Method not allowed - hm.

    Ich hab die Dateien bei tripod hochgeladen, falls es nützlich ist.

    Erlaubt tripod cgi-Perlscripts?
    Erlaubt tripod cgi-Perlscripts in dem Verzeichnis, in dem Du das Script hast?
    Normalerweise werden perl-Scripts nur in cgi-bin (oder cgibin oder ähnlich benannten) speziell konfigurierten Verzeichnissen ausgeführt...

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/