Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Probleme mit mktime() bei ConditionalGet

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 06.04.2004, 18:45

Was ich aber noch nicht verstehe:
$timestamp = mktime(12,30,15,02,22,2004);
doConditionalGet($timestamp);

Trage ich als timestamp ein Datum nach 01.04.2004 ein, also
$timestamp = mktime(12,30,15,04,01,2004);

bekomme ich stets als Header ausgegeben:
Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT

Trage ich als Datum jedoch etwas vor dem 01.04.2004 ein, bekomme ich das entspr. Datum angezeigt.

Gibt es dafür eine Erklärung?

Beste Grüsse, Peter

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 06.04.2004, 20:09

Mit dem von dir angegebenen Beispiel bekomme ich folgendes zurück:
Last-Modified: Thu, 1 Apr 2004 12:30:15 GMT
Bei mir passt das...

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 09.04.2004, 05:25

Also ich weiss nicht wieso es manchmal funktioniert, manchmal nicht. Bei mir ist aber soeben der selbe Fehler aufgetreten wie bei Peter.

Hab nachgelesen und klar, man muss bei Monat und Tag keine zweistelligen Zahlen nutzen sondern einfach 4 und 1. Dann gehts durchgehend.

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 09.04.2004, 08:55

Hallo Jan,

da bin ich jetzt beruhigt - dachte schon ich wäre etwas gaga.

Frohe Ostern, Peter

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 09.04.2004, 10:28

Ich habe es jetzt eben nochmal mit dem einstelligen Zahlen ausprobiert. - Fehlanzeige, das Problem bleibt bestehen.

Witzig ist, wenn ich ein Datum in der Zukunft mit zweistelligem Tagesdatum wähle (heute ist der 09.04.04) also zum Beispiel
$timestamp = mktime(12,30,15,4,10,2004);

bekomme ich als last modified genau die aktuelle Uhrzeit angezeigt.

Nehme ich ein Datum in der Zukunft mit einstelligem Tagesdatum, also zum Beispiel
$timestamp = mktime(12,30,15,5,9,2004);
bekomme ich wieder den berühmten 1.1.1970 angezeigt.

Und gebe ich den Monat einstellig und den Tag zweistellig ein
$timestamp = mktime(10,30,15,4,09,2004);
bekomme ich den 31. März 2004 ausgespuckt

Also ich kapiere es momentan nicht...

Beste Grüsse, Peter

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 09.04.2004, 12:29

Dann nimm mal folgenden Code zum Testen:

Code: Alles auswählen

<?php
$timestamp = mktime&#40;x, x, x, x, x, x&#41;;
echo date&#40;'d M Y H&#58;i&#58;s', $timestamp&#41;;
?>
Die Reihenfolge der Argumente werden zB hier aufgezeigt:
https://www.php3.de/mktime

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 09.04.2004, 14:39

So, ich habe die Lösung. (Bin aber noch am Testen...)

Das Problem lag in der Verwendung der date("r")-Funktion, diese liefert einstellige Zahlen für den Tag, nicht 2stellig wie gefordert.

Die Lösung ist folgende:

Code: Alles auswählen

$last_modified = substr&#40;date&#40;'r', $timestamp&#41;, 0, -5&#41;.'GMT';

ist zu ersetzen mit

$last_modified = gmdate&#40;"D, d M Y H&#58;i&#58;s", $timestamp&#41;.' GMT';
In den Codebeispielen im anderen Thread habe ich die Zeile ersetzt.

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 09.04.2004, 15:38

Hi Jan,

jetzt geht es bei mir.

Tag und Monat muss ich jedoch weiterhin einstellig eingeben (für heute z.b.).

Thanks a lot, Peter
Zuletzt geändert von pfuchs am 09.04.2004, 16:05, insgesamt 2-mal geändert.

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 09.04.2004, 15:55

Ja, mktime() braucht weiterhin einstellige Eingaben, das ist so bei dieser Funktion. Aber selbst wenn man das gemacht hat gab es ja Probleme... und die sind nun weg.

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 09.04.2004, 16:05

Hallo Jan,

habe es jetzt so eingestellt, dass immer der Vortag angezeigt wird
$tag = date("j");
$monat = date("n");
$jahr = date("Y");
$timestamp = mktime(00,00,01,$monat,$tag,$jahr);

Dadurch bekomme ich stets 22:00:01 des Vortages angezeigt. Die zwei Stunden Differenz rühren wohl von einer Zeitsverschiebung her, was mich aber nicht stört.

Schade nur, dass dies momentan nur für meine Startseite (index.php) greift.

Alle anderen Seiten werden über Rewrite Engine umbenamst a´la
RewriteEngine on
RewriteCond %{REQUEST_URI} kick-(.*)\.html$
RewriteRule kick-(.*)\.html$ /index.php?viewCat=$1
Und nachdem die Seite(n) kick*.html ja physisch nicht existieren, kann ich auch keinen header einbauen.

Oder gibt es da über htaccess eine Möglichkeit?

Anyway - bin jetzt erstmal froh, dass es überhaupt funktioniert.

Beste Grüße, Peter

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 09.04.2004, 16:08

Da die effektive Datei die index.php ist funktioniert das. Ohne Probleme.

pfuchs
PostRank 4
PostRank 4
Beiträge: 170
Registriert: 11.07.2003, 21:27
Wohnort: München

Beitrag von pfuchs » 09.04.2004, 20:01

Stimmt, lag letztens wohl an meinen generellen Problemen mit dem header, das es bei mir nicht zu funktionieren schien.

Peter

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag