Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
HTTP_REFERER alte Angabe
Autor: Andi35
Datum: 04.08.2008 09:14:07
Guten Morgen an alle
Ich habe ein kleines Problem mit der Umgebungsvariable HTTP_REFERER. In meinem .shtml Dokument rufe ich mit <!--#include virtual="/cgi-bin/neu_end.pl" -->
ein Perl-Skript auf, welches die Fusszeile der Website "schreibt". In der Fusszeile möchte ich gerne die Information angeben, wann das .shtml Dokument letztmals geändert wurde. Mit HTTP_REFERER finde ich heraus, von wo das Perl-Skript gestartet wurde und erhalte mit der stat() Funktion die gesuchte Info. Nur: das korrekte Datum erhalte ich erst beim zweiten Aufrufen einer Seite. Ich hoffe, ich konnte Euch mein Problem möglichst präzise schildern...
---------------------
Perl-Skript:
#!/usr/bin/perl -w
use strict;
use CGI;
#Fatale Fehler an Browser senden
use CGI::Carp qw(fatalsToBrowser);
my $cgi = new CGI;
my $ref = $ENV{'HTTP_REFERER'};
my $index = index($ref, "/", 10);
my $file = substr($ref,$index + 1);
my $pathfile = "../".$file;
my @info = stat($pathfile);
my $last = $info[9];
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime($last);
$Monat+=1;
$Jahrestag+=1;
$Jahr+=1900;
my @Monatsnamen = ("","Januar","Februar","März","April","Mai","Juni",
          "Juli","August","September","Oktober","November","Dezember");
print "<span style='font-size:0em'>Content-type:text/html</span>nn";
print << "ENDE";
        </div>
        <br class="clear">
      </div>
    </div>
    <div id="foot">
      <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td align="left" width="33%">Letztes Update: $Monatstag. $Monatsnamen[$Monat] $Jahr</td>
          <td align="center">© 2008 Frauenverein Ittigen</td>
          <td align="right" width="33%"><a href="http://frauenverein-ittigen.ch/impressum.shtml">Impressum</a></td>
        </tr>
      </table>
    </div>
  </body>
</html>
ENDE
Re: HTTP_REFERER alte Angabe
Autor: moll
Datum: 06.08.2008 10:46:55
> Guten Morgen an alle
>
> Ich habe ein kleines Problem mit der
> Umgebungsvariable HTTP_REFERER. In meinem .shtml
> Dokument rufe ich mit <!--#include
> virtual="/cgi-bin/neu_end.pl" -->
> ein Perl-Skript auf, welches die Fusszeile der
> Website "schreibt". In der Fusszeile möchte ich
> gerne die Information angeben, wann das .shtml
> Dokument letztmals geändert wurde. Mit
> HTTP_REFERER finde ich heraus, von wo das
> Perl-Skript gestartet wurde und erhalte mit der
> stat() Funktion die gesuchte Info. Nur: das
> korrekte Datum erhalte ich erst beim zweiten
> Aufrufen einer Seite. Ich hoffe, ich konnte Euch
> mein Problem möglichst präzise schildern...
Wenn ich dich richtig verstehe hast du in jedem deiner shtml-Doks diesen Perl-Skript-Aufruf stehen und erwartest jetzt, dass das Skript als Referer den Namen der shtml-Datei  mitbekommt. Das ist aber nicht richtig. Der Referer bezieht sich auf das shtml-Dok selbst und das Skript ist ein Teil davon. Das würde nur dann funktionieren wenn du dein shtml-Dok selbst über einen Link aufrufst und der Referer auf dem selben Server liegt.
Dein Link beweist das auch. Da gibt es nämlich einen Referer (http://www.selfhtml.org), nur dass du den HTML-Dateinamen logischerweise nicht auf deinem Server findest und die stat() Funktion demzufolge einen Fehler ausgibt. Die Funktion localtime hat dann einen falschen Wert in $last und gibt das allgemeine Anfangsdatum der IT-Zeitrechnung 01.Januar 1970 zurück.
Ich denke wenn du anstatt HTTP_REFERER DOCUMENT_NAME verwendest, sollte es funktionieren. Außerdem bekommst du dann den Dateinamen direkt und brauchst den nicht aufwändig aus dem url rausschneiden.
Grüße Matthias
Re: HTTP_REFERER alte Angabe
Autor: Andi35
Datum: 11.08.2008 16:59:25
Hallo Matthias
> Ich denke wenn du anstatt HTTP_REFERER
> DOCUMENT_NAME verwendest, sollte es
> funktionieren. Außerdem bekommst du dann den
> Dateinamen direkt und brauchst den nicht
> aufwändig aus dem url rausschneiden.
Vielen Dank für deine Hilfe! Mit DOCUMENT_NAME funktioniert es einwandfrei.
Gruss
Andreas
-----------------------------
Bitte keine Fullquotes -- Freddy
s. http://de.wikipedia.org/wiki/TOFU
s. http://freddyfreddy.fr.funpic.de/netiquette/22-07-08/index.php?a=text7_0#text7