Wie kann ich das CGI Modul beim dekodieren einsetzen ?
Markus P.
- perl
Hallo ,
Ich will ein Gästebuch machen und bis jetzt klappt alles wunderbar, nur hab ich irgendwie Probleme die Daten dekodiert auf das Flat File zu speichern .Ich weis zwar das es irgendwie mit $inhalt = &query->param('inhalt'); gehen muss, aber ich weis nicht wie ich das hier kombinieren kann. Ich kenn zwar Beispiele die param() verwenden um die übergebenen Daten einzulesen, aber das verwirrt mich irgendwie, weil ich die Daten doch aus QUERY_STRING lesen muss. Hier nun das Script bis jetzt.
#!/usr/bin/perl -w
use CGI qw(:standard);
$data = "data.txt";
$inhalt = $ENV{'QUERY_STRING'};
print header();
print "<html><head><title>save</title></head>\n";
print "<body bgcolor="#5F5F5F" text="white" link="white" vlink="white">\n";
open(DATA,">>$data") or die "Can't save data: $!\n";
flock DATA, 2;
print DATA "$inhalt \n";
close DATA;
print "<p>Files saved</p>\n";
print "<a href="mainboard.pl">BACK TO MAIN SITE</a>";
print "</body></html>\n";
Danke im Voraus..
Hi,
$inhalt = &query->param('inhalt');
da Du CGI als ':standard' einbindest, brauchst Du "$query->" (btw: "$" statt "&"!) nicht. Einfach nur
my $inhalt = param('inhalt');
weil ich die Daten doch aus QUERY_STRING lesen muss.
Du musst nicht. Sie stehen dort aber (immer noch - bei POST wäre das anders!) in der Form drin, die Du offenbar wünschst.
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);
$data = "data.txt";
my $data = '/kompletter/pfad/zu/data.txt'; # Im CGI-Kontext ist das aktuelle Verzeichnis undefiniert!
Du kannst natürlich auch versuchen, mit Hilfe von
perldoc -f map
perldoc -f join
etc.
und dem Array param() den String wieder zusammenzusetzen; aber in $ENV{'QUERY_STRING'} steht er ja schon. CGI.pm hat ihn mal auseinandergepflückt, aber deswegen brauchst Du ihn nicht gleich neu aufzubauen.
Sowie Du allerdings auf <form method="POST"> umsteigst, wirst Du das entsprechend machen müssen. STDIN kann nur einmal ausgelesen werden.
Cheatah
Hallo Cheatah,
Danke für die rasche Hilfe mit $inhalt = param('inhalt') ,dadurch funktionierts jetzt =) ,btw. Ich hab den Sinn von use strict + der dazugehörigen my Variablen bis jetzt nicht so ganz verstanden, deswegen verwende ichs nicht, da ich nicht weis was es eigentlich genau macht.
Hi,
Ich hab den Sinn von use strict + der dazugehörigen my Variablen bis jetzt nicht so ganz verstanden,
perldoc strict
perldoc -f my
deswegen verwende ichs nicht, da ich nicht weis was es eigentlich genau macht.
Es ist sinnvoll, fremden Code nicht zu übernehmen, den man nicht versteht. Hier möchte ich Dir aber empfehlen, es entweder zu verstehen, oder ausnahmsweise unverstanden zu übernehmen :-)
Durch die Verwendung von strict wirst Du auf Fehler in Deinem Code aufmerksam gemacht, von denen Du noch nicht mal was geahnt hast. Die meisten Deiner Scripts werden damit nicht mehr funktionieren - korrigiere ihre Fehler.
Cheatah