PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl und Gaestebuch :-(



Helium
05-05-2002, 20:03
hab vor kurzen ein gaestebuch in perl geschrieben. eigentlich nichts besonderes sollte man denken ......
mein Problem:
der server meldet mir interner Fehler 500 ?!
trotzdem führt er das script aus !
habe das script lokal ausprobiert , ohne Probleme.....

vielleicht hat jemand von euch ne idee.
das script sieht folgender maßen aus:

#!/usr/bin/perl
open(db,"</kunden/homepages/30/d11176583/htdocs/werftler/gaestebuch/gaestebuch.html");
@eingabe = <db>;
close (db);
read (STDIN, $formdaten, $ENV{'CONTENT_LENGTH'});
@formfelder = split (/&/, $formdaten);
($x[1],$author) = split (/=/, $formfelder[0]);
($x[2],$email) = split (/=/, $formfelder[1]);
($x[3],$homepage) = split (/=/, $formfelder[2]);
($x[4],$text) = split (/=/, $formfelder[3]);
$_ = "@eingabe";
s {<!--daten>}#<!--daten>\n<table border="1">\n<TBODY>\n<tr><td>Text:</td><td width="590">$text</td></tr><tr><td>Author:</td><td>$author</td></tr><tr><td>Email:</td><td>$email</td></tr><tr><td>Homepage:</td><td>$homepage</td></tr></tbody></table><br><br><hr><hr><br><br>#;
open (db1, "> /kunden/homepages/30/d11176583/htdocs/werftler/gaestebuch/gaestebuch_neu.html");
print db1 ("$_");
close (dbx);
print STDOUT ("<HTML><HEAD></HEAD><BODY><H1 align=center>Danke für Ihren Eintrag</h1><a href=www.andis-homepage.de/werftler/gaestebuch/gaestebuch.html>zurück</a></body></html>");

danke im voraus
Helium

lolli
06-05-2002, 11:48
Du musst noch vor der Anweisung print STDOUT ("<......... ein print "Content-type: text/html\n\n"; schreiben, damit der Browser weiss, welche Art von Daten er bekommt.

Übrigens: Das STDOUT kannst du weglassen, da Perl immer (sofern kein anderes Dateihandle angegeben) nach STDOUT schreibt.

oliver

Helium
06-05-2002, 19:14
Danke für deine Hilfe,
aber leider hab ich immer noch die selbe Fehlerausgabe :(

gruss
helium

TommeS73
07-05-2002, 05:07
Was steht denn in der error_log (oder wie immer die Fehlerausgabedatei Deines Servers heisst) ???

Helium
08-05-2002, 14:39
tach,

leider ist das nicht mein server ...... :-(

in meinem kundenverzeichnis befindet sich keine error_log ( oder ähnliche ) datei.

wenn ich das tool vom provider benutze bekomme ich keine fehlerangabe, da auch das tool sagt "alles ok".

funzt aber trotzdem net ........
muss wohl am provider liegen !

danke für die hilfe(n)

helium

TommeS73
08-05-2002, 17:08
@helium:

Das mit dem Skript muss funzen.

Ich habe mir Dein Skript nocheinmal genauer angesehen und muss sagen:

NIMM DAS KLASSE "CGI-MODUL" -> damit ersparst Du Dir echt 'ne Menge Kopfschmerzen und der Quelltext sieht auch lesbarer aus.

Bsp.:


#!/usr/bin/perl -w
# den Schalter -w NIE vergessen -> eine bessere Hilfe gibt es nicht

use CGI qw(:all); # binde CGI ein und kopiere Variablen aus dem CGI-Modul in den Namensraum
# des gerade ausgeführten Skriptes

$parameter_1 = param ('variable1'); # hole den Inhalt der vom Browser übergebenen Variablen1
# und weise deren Inhalt an $parameter_1 zu
$parameter_2 = param ('variable2'); # das Spiel kann man endlos fortsetzen

# übrigens: es ist dem CGI-Modul völlig egal, wie die Daten vom Browser übermittelt werden
# (also ob per POST oder per GET)
# demzufolge kannst Du

print header(), # Schreibe schon einmal den Header ("content-tpye: text/html\n\n"), bevor wir das
# vergessen -> sonst gibt es hässliche 500 Fehler;-)
start_html(), # die öffnenden html und body-Tags schreiben
"Parameter 1: $parameter_1<br>", # Parameter 1 + HTML-Zeilenumbruch ausgeben
"Parameter 2: $parameter_2", # Parameter 2 ausgeben
end_html(); # und nun noch die schliessenden body und html-Tags schreiben


Fertig.

Skript abkopieren und ausführen -> wenn funktioniert, dann Dein Skript ein wenig umschreiben.

o.g. Skript wird wie nachfolgend aufgerufen:

http://url.zum.skript/skript.cgi?variable1=hallo&variable2=helium

mfg
Tom