Was ist hier falsch?

Preisfrage: Was ist falsch im folgenden Perl-Code?

#!/usr/bin/perl

$remote_host = „$ENV{‚HTTP_HOST‘}“;
$HostRedirector = „default.html“;

if ($remote_host =~ /.it/) {$HostRedirector = „ital.html“ }
elsif ($remote_host =~ /.de/) {$HostRedirector = „deutsch.html“ }
elsif ($remote_host =~ /.ch/) {$HostRedirector = „deutsch.html“ }
elsif ($remote_host =~ /.at/) {$HostRedirector = „deutsch.html“ }

print „Location: $HostRedirector\n\n“;

Vielleicht sieht der eine oder andere einen Fehler?

bis dann
Christian

Hallo,

$remote_host = „$ENV{‚HTTP_HOST‘}“;

diese Zeile ist falsch !

-)

Versuchs mal mit REMOTE_HOST

Gruß
Arne

Hi!

$remote_host = „$ENV{‚HTTP_HOST‘}“;

diese Zeile ist falsch !
Versuchs mal mit REMOTE_HOST

Danke für die Antwort! :smile:

Ich hatte vor HTTP_HOST schon REMOTE_HOST probiert. Auf Anraten meines Providers habe ich das dann geändert.

Leider funktioniert REMOTE_HOST eben auch nicht. Any idea?

cu
Christian

Hallo,

Ich hatte vor HTTP_HOST schon REMOTE_HOST
probiert. Auf Anraten meines Providers
habe ich das dann geändert.

aha…

Leider funktioniert REMOTE_HOST eben auch
nicht. Any idea?

Beschreib funktioniert nicht mal genauer…

und probier doch einfach mal:

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "$ENV{REMOTE\_HOST}\n";
print "$ENV{HTTP\_HOST}\n";

und schau was da rauskommt
bzw.

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "%ENV:\n", map { "$\_ = $ENV{$\_}\n" } keys %ENV;

Ach ja, die RegExp /.de/ bezieht sich auf irgendeinzeichen gefolgt von d gefolgt von e Punkt Deh Eh geht mit /.de/ … gleiche s für .it usw…

Wir schaffen das schon…

Gruß
Arne

Ich hatte vor HTTP_HOST schon REMOTE_HOST
probiert. Auf Anraten meines Providers
habe ich das dann geändert.

HTTP_HOST ist die Variable des Servernamens, die kannste getrost vergessen um den Clientnamen rauszukriegen.
Hierfür brauchst du wirklich die REMOTE_HOST, allerdings kommt es häufig vor, dass da auch nur die IP drinsteht.
Hier ein Code, den ich mal in meinem ehemaligen Counterdienst verwendet habe, der recht zuverlässig die IP in nen Hostnamen umwandelt (per DNS-Lookup).

if (($ENV{'REMOTE\_HOST'} eq $ENV{'REMOTE\_ADDR'}) && ($ENV{'REMOTE\_ADDR'} =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/))
 {
 $Address = pack('C4', $1, $2, $3, $4);
 $DNS\_Address = (gethostbyaddr($Address, 2))[0];
 $ENV{'REMOTE\_HOST'} = $DNS\_Address if $DNS\_Address;
 }
$ENV{'REMOTE\_HOST'} =~ tr/[A-Z]/[a-z]/;