E
Hallo!
Ich hab wieder mal ein Problem:
Ich wollte mir ein selbst ein Gaestebuch programmieren. Da der Server, den Ich verwenden will, kein PHP, aber dennoch CGI unterstützt, hab ich mir gedacht, ich mach es halt damit.
Soweit die Theorie...
Nun habe ich als WWW-Server Xitami gewählt und entpackt. (um das Ganze lokal zu testen, auf dem Server ist mein Versuch genau so gescheitert...)
Soweit startet das Programm auch und protokoliert sogar die Zugriffe auf das CGI Script!
Nur in der Test.shtml wird nicht die Ausgabe zurückgegeben, wie es sollte, sondern den Inhalt meiner /cgi-bin/comments.pl Datei.
Ich habe die Vermutung, das der Server nicht richtig installiert ist, aber trotzdem häng ich mal den Ihnalt beider Dateien aus...
Test.shtml
<html>
<head>
<title>Kommentarseite</title>
</head>
<body>
<h1>Kommentar</h1>
<form action="//E:/CGI/cgi-bin/comments.pl" method=post>
Name: <input size=40 maxlength=40 name="AnwenderName"><br>
Text: <textarea rows=5 cols=70 name="Kommentartext" wrap=virtual></textarea><p>
<input type=submit value="Absenden">
</form>
</body>
</html>
Die datei /cgi-bin/comments.pl
#!/usr/bin/perl
read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
print 'Content-type: text/html\n\n';
print '<html><head><title>CGI-Feedback</title></head>\n';
print '<body><h1>CGI-Feedback vom Programm <i>comments.pl</i></h1>\n';
@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)
{
($name, $value) = split(/=/, $Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$Formular{$name} = $name;
$Formular{$value} = $value;
print $Formular{$name} = $Formular{$value}, '<br>\n';
}
print '</body></html>\n';
Desweiteren lauten die absoluten Pfade der Dateien:
E:\CGI\Test.shtml
und
E:\CGI\cgi-bin\comments.pl
Ich hoffe Ihr könnt mir helfen.
Gruß
Extinction