In Perl "BasisAdresses" des aufrufenden Webs ermitteln
atmaseva
- cgi
0 Cheatah
Hallo zusammen,
wie kann ich in einem Perl-Script die „Basis-Adresse“ eines Webs ermitteln, egal von welchem Web und aus welchem Unterverzeichnis eines Webs das Perl-Script aufgerufen wird, so dass ich im Perl-Script immer auf typische Unterverzeichnesse des „rufenden“ Webs (hier „http://myweb/web1/images“) referenzieren kann.
Also z.B.:
$aktuelleBasisAdresse = ???????????
print "<td><IMG src='$aktuelleBasisAdresse/images/grafikX.gif'></TD>\n";
Erläuterungen:
Ich habe zwei unterschiedliche Webs, die in den lokalen Verzeichnissen
„C:\public\web1“ und „C:\public\web2“ liegen.
Direkt unter „C:\public“ liegt eine „index.html“ von der aus web1 bzw. web2 ausgewählt werden können.
Auf das Verzeichnis „C:\public“ wird in der „htppd.conf“ mit dem virtuellen Namen „myweb“ referenziert.
Ich habe ein Perl-Sripct, das von beiden Webs (web1, web2) aus aufgerufen werden kann. Es bereitet u.a. eine Tabelle mit Grafiken aus den jeweiligen Webs „http://myWeb/web1/images“ und „http://myWeb/web2/images“ auf.
Bis jetzt habe ich keine andere Möglichkeit gefunden, als im Perl-Script festverdrahtet die entsprechende Adressierung anzugeben:
print "<td><IMG src='http://myWeb/web1/images/grafikX.gif'></TD>\n"; bzw.
print "<td><IMG src='http://myWeb/web2/images/grafikX.gif'></TD>\n";
Ich habe keine Umgebungsvariable gefunden, aus der ich zuverlässig http://myweb/web1 bzw. http://myweb/web2 ermitteln kann.
Ruft z.B. eine html Datei aus dem Verzeichnis http://myweb/web1/Unterverzeichnis das Perl-Script auf, so steht z.B. in HTTP_REFERER http://myweb/web1/Unterverzeichnis/dateiname.html.
Ruft eine html Datei aus dem Verzeichnis http://myweb/web2/ das Perl-Script auf, so steht in HTTP_REFERER http://myweb/web2/name.hmtl.
Ich möchte ungern implizite Annahmen kodieren: z.B. mit Zeichenkettenoperatoren das vierte „/“ ermitteln und dann mit Substring den vorderen Teil ausschneiden. Das würde sofort schief gehen, sobald ich ein drittes Web in einem Verzeichnis C:\public\Zwischenverzeichnis\web3 anlegen würde.
Vielen Dank schonmal an alle, dies geschafft haben, sich den ganzen Text durchzulesen. Und ein doppeltes Dankeschön an denjenigen, der 'ne Lösung für mich hat!
Ciao
atmaseva
Hi,
wie kann ich in einem Perl-Script die „Basis-Adresse“ eines Webs
argl. Bitte höre auf, Sites als "Web" zu bezeichnen. Das ist übelster Frontpage-Slang.
$aktuelleBasisAdresse = ???????????
Du möchtest in solchen Fällen zunächst %ENV untersuchen und nebenbei definieren, was eigentlich eine "Basisadresse" ist. Denn dies:
print "<td><IMG src='$aktuelleBasisAdresse/images/grafikX.gif'></TD>\n";
kann auf zwei generische Arten beantwortet werden:
my $aktuelleBasisAdresse = '.'; # oder
my $aktuelleBasisAdresse = '/';
„C:\public\web1“ und „C:\public\web2“ liegen.
Ferner benutze bitte sinnvolle Anführungszeichen. Copy & Paste aus Word ist ziemlich suboptimal[1].
Cheatah
[1] politisch unkritisches Synonym für "scheiße"