PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cgi funzt nicht



 HS
10-04-2002, 13:43
ich rufe von einer html seite mit einem formular und einem input type text feld ein perl script auf. das script soll nur die daten aus dem textfeld wieder ausgeben. macht es aber nicht ;)

die ausgabe:

print $test;

das textfeld auf der html seite hat den namen test.

ich habe mit perl noch nicht viel gemacht. mit php funzt das. Nebenbei mal ne andere frage: ist es möglich mit php system ausgaben zu machen wie bei perl? system "....";

Gruß
HS

ponzellus
16-04-2002, 18:34
hi!
du musst die variableninhalte erst aus dem querystring auslesen. je nach dem, ob du als Method GET oder POST verwendest, sehen die so aus:
bei POST:

read(STDIN,$data,$ENV{'CONTENT_LENGTH'});
bei GET:

$data = $ENV{'QUERY_STRING'}

fuer dein beispiel saehe das dann so aus (mit METHOD=POST)


#!/usr/bin/perl
read(STDIN,$data,$ENV{'CONTENT_LENGTH'});
my ($tmp, $textvalue) = split("=", $data); # wegen ?text=inhalt_von_textfeld

print "Content-type: text/html\n\n";
print "<html><head><title>simple cgi-script</title></head><body>\n";
print "daten des textfeldes = $textvalue\n";
print "</body></html>\n";

für mehr infos zum thema cgi siehe selfhtml (http://www.teamone.de/selfhtml)

Gruesse
-ponzellus-

lolli
20-04-2002, 08:15
Hi,
ich habe mal noch ein anderes Beispiel. Es ist etwas ausführlicher und bereinigt deine Formulatrdaten auch gleich ein wenig:

#!/usr/bin/perl

if(uc($ENV{'REQUEST_METHOD'}) eq "POST"){
read(STDIN,$d,$ENV{'CONTENT_LENGTH'});
} else {
$d=$ENV{'QUERY_STRING'};
}
%DATA=split(/[=&]/,$d);
foreach $k (keys(%DATA)){
$DATA{$k}=~s/%([a-fA-F0-9]{2})/pack("C",hex($1))/ge;
$DATA{$k}=~s/[\r\n]/<br>/g; # sollte nur dann erfolgen, wenn keine Fehler aufgetreten sind
$DATA{$k}=~s/\+/ /g;
}
# abfragen kannst du dann den Variableninhalt mit $DATA{NAME_DES_FELDES}
print "Content-type: text/html\n\n";
print "<html><head><title>simple cgi-script</title></head><body>\n";
print "<form>
E-Mail: <input type='text' name='email' value='$DATA{email}'><br>
Name: <input type='text' name='name' value='$DATA{name}'><br>
Textfeld: <textarea rows=4 cols=40 name='text'>$DATA{text}</textarea><br>
<input type='submit' value='senden'>
</form>";
print "</body></html>\n";

Bis dann
Oliver

TommeS73
03-05-2002, 04:22
nimm das Modul CGI, welches standardmässig bei der Perldistribution mit dabei ist:

#!/usr/bin/perl -w
use CGI qw/:all/;

$parameter_1 = param('test'); #alle Daten aus dem Textfeld werden in die Stringvariable kopiert

print header(),
start_html(-title=>'Ein kleiner einfacher Test'),
$parameter_1,
end_html();

sieht doch einfach aus, oder??? *grins*