hallo zusammen
habe folgendes problem:
ich habe ein CGI/Perl-script welches ich für ein gästebuch für flashmx benutze. das script war eine vorlage und ich musste nur die pfad angaben ändern. nun, das script funktioniert einwandfrei in verbindung mit flash5. jetz möchte ich aber das script in verbindung mit flashmx benutzen. bei flashmx muss aber der text der mit dem script ausgetauscht wird in utf8-format sein.
nach einigen nachforschungen kann man das mit utf8_encode bewerkstelligen.
es geht um folgendes script, wobei eigentlich nur "read book" interessant sein sollte:
eben wie oben gesagt, es geht mE. eigentlich nur um diesen scriptteil:
wenn ich nun die zeile
"print $zeile;"
in
"print utf8_encode ($zeile);"
ändere, funktioniert das ganze script nicht mehr. dh., dass der aufruf "buch.cgi?todo=read" kein text mehr zurück gibt.
weiss jemand wieso das so ist? ist es ein formatierungsfehler? oder was serverseitiges?
schon mal besten dank für eure antworten.
habe folgendes problem:
ich habe ein CGI/Perl-script welches ich für ein gästebuch für flashmx benutze. das script war eine vorlage und ich musste nur die pfad angaben ändern. nun, das script funktioniert einwandfrei in verbindung mit flash5. jetz möchte ich aber das script in verbindung mit flashmx benutzen. bei flashmx muss aber der text der mit dem script ausgetauscht wird in utf8-format sein.
nach einigen nachforschungen kann man das mit utf8_encode bewerkstelligen.
es geht um folgendes script, wobei eigentlich nur "read book" interessant sein sollte:
PHP-Code:
#!/usr/bin/perl
#### Set the Variables ##############################
$basedir="/home/blabla/public_html/cgi-bin/lucie_guestbook/";
$listfile="gbuch.txt";
$mailprog = '/usr/bin/sendmail';
$list_mail = "root\@blabla.ch";
###################################################
if (!$ARGV[0]) {
if($ENV{'REQUEST_METHOD'} eq 'GET')
{ $ARGV[0] = $ENV{'QUERY_STRING'};
}
else
{ read(STDIN, $ARGV[0], $ENV{'CONTENT_LENGTH'});
}
}
if ($ARGV[0]) {
%FORM;
&get_arg;
if ($FORM{'todo'} eq 'read' ) {
&read_book;
}
if ($FORM{'todo'} eq 'sign' ) {
&sign_book;
}
}
else {
print "no parameters!\n";
}
#### Initialize Arguments ##################################
sub get_arg {
@pairs = split(/&/, $ARGV[0]);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$FORM{$name} = $value;
} #foreach
} #end get_arg
#### Read Book ##################################
#### Read Book ##################################
sub read_book {
open (LISTE,"<$basedir/$listfile") || die $!;
@liste = <LISTE>;
close (LISTE);
$ccount=0;
print "Content-type: text/html\n\n";
foreach $zeile (@liste){
#print "coeof=true&";
print $zeile;
print "&";
$ccount++;
} #foreach
print "&count=$ccount&eof=true";
}
#### Sign Book ##################################
sub sign_book {
$ccount=1;
&datum;
open (LISTE,"<$basedir/$listfile") || die $!;
@liste = <LISTE>;
close (LISTE);
foreach $zeile (@liste){ $ccount++; }
open (BOOK,">>$basedir/$listfile") || die $!;
print BOOK "aname$ccount=$FORM{'name'}&acomment$ccount=$FORM{'comment'}&aurl$ccount=$FORM{'url'}&adate$ccount=$long_date&aemail$ccount=$FORM{'email'}&ax$ccount=$FORM{'txtx'}&ay$ccount=$FORM{'txty'}&aIP$ccount=$ENV{'REMOTE_ADDR'}&at$ccount=$FORM{'t'}\n";
close (BOOK);
print "Content-type: text/html\n\n";
print "eof=true";
open (MAIL, "|$mailprog -t")
|| print "Can't start mail program";
print MAIL "To: $list_mail\n";
print MAIL "From: $list_mail\n";
print MAIL "Subject: Eintrag ins FW-Buch!\n\n";
print MAIL "Hier die Informationen - Besucher $ccount:\n\n";
print MAIL "Name: $FORM{'name'}\n";
print MAIL "URL: $FORM{'url'}\n";
print MAIL "E-mail: $FORM{'email'}\n";
print MAIL "Datum: $long_date\n";
print MAIL "Address: $ENV{'REMOTE_ADDR'}\n";
print MAIL "Kommentar: $FORM{'comment'}\n";
print MAIL "\n";
print MAIL "Service des,\n";
print MAIL "Cybercollege-Team\n\n";
close (MAIL);
exit;
} #end sign_book
#### Get Date and Time ##################################
#### Jahr 2000 Sicher ##################################
sub datum {
@days = ('Sunday','Monday','Tuesday','Wednesday',
'Thursday','Friday','Saturday');
@months = ('Januar','Februar','März','April','Mai','Juni','Juli',
'August','September','Oktober','November','Dezember');
($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6];
$time = sprintf("%02d.%02d",$hour,$min);
if ($mday < 10) { $mday = "0$mday"; }
# $time = sprintf("%02d:%02d:%02d",$hour,$min,$sec);
$year += 1900;
$long_date = "$mday\. $months[$mon] $year ($time Uhr)";
# $long_date = "$days[$wday], $months[$mon] $mday, $year at $time";
}
exit;
PHP-Code:
#### Read Book ##################################
sub read_book {
open (LISTE,"<$basedir/$listfile") || die $!;
@liste = <LISTE>;
close (LISTE);
$ccount=0;
print "Content-type: text/html\n\n";
foreach $zeile (@liste){
#print "coeof=true&";
print $zeile;
print "&";
$ccount++;
} #foreach
print "&count=$ccount&eof=true";
}
"print $zeile;"
in
"print utf8_encode ($zeile);"
ändere, funktioniert das ganze script nicht mehr. dh., dass der aufruf "buch.cgi?todo=read" kein text mehr zurück gibt.
weiss jemand wieso das so ist? ist es ein formatierungsfehler? oder was serverseitiges?
schon mal besten dank für eure antworten.
Kommentar