PHP Smarty Cache-Problem

kapfe89

Mitglied
Hallo Zusammen,

ich habe folgendes Problem:

Ich leite von einer Seite auf eine Andere weiter. Das Template wird dabei mittels Smarty generiert.
Dabei wird bei jeden Seitenaufruf ein Wert, der in der Sessionvariable gespeichert wird, um eins hochgezählt.
Wird die Seite zum ersten Mal aufgerufen, ist der Wert der Variable 3.
Gehe ich zurück und lass mich zum zweiten Mal weiterleiten, ist der Wert 2.
Wird der Cache gelöscht, dann ist sie wieder 3.

Sie sollte aber eigtl. immer 2 sein.

Dies liegt am Smarty-Template, denn wenn dieses nicht im Code enthalten ist, ist der Wert immer 2.
Ansonsten scheint es so, als wird die Seite zwei mal geladen, wenn sie nicht im Cache vorhanden ist.

Hier sind mal die Codefragmente (vereinfacht):

Die Start-PHP-Datei:
PHP:
<?php

session_start();
$_SESSION['nummer'] = 1;
header("location:test3_show.php");

?>

Die weitergeleitete PHP-Datei:
PHP:
<?php

require_once "../../3rdParty/Smarty/MySmarty.php";

$smarty = new MySmarty();


session_start();
$nummer = $_SESSION['nummer'];
$nummer++;
$_SESSION['nummer'] = $nummer;
echo $nummer;

$smarty->display('template.tpl');

?>

Das Template:
HTML:
<DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=charset=utf-8" />
</head>
<body>
</body>
</html>


Kennt irgendjemand dieses Problem?
Weiß jemand wieso das so ist?

Danke & Gruß,
Martin
 
Du kannst zumindest mal Gewissheit erlangen, ob die Seite tatsächlich 2 mal geladen wird, wenn sie nicht im Cache ist (was ich eher für fragwürdig und ein seltsames Phänomen halte), in dem du mal was ins Server-Log schreiben lässt, und zwar immer, wenn du nummer inkrementierst:

PHP:
$_SESSION['nummer']++; // << etwas vereinfachte Version deiner Inkrementierung
error_log('nummer hat nun den Wert ' . $_SESSION['nummer']);

error_log() ist hier dokumentiert.
 
Hi,

danke für deine Antwort.

Hier der Error Log:

Code:
[Tue Sep 15 10:26:07 2009] [error] [client 127.0.0.1] nummer hat nun den Wert: 2, referer: http://localhost/...
[Tue Sep 15 10:26:07 2009] [error] [client 127.0.0.1] nummer hat nun den Wert: 3, referer: http://localhost/...
[Tue Sep 15 10:26:16 2009] [error] [client 127.0.0.1] nummer hat nun den Wert: 2


Habs zweimal gemacht, und wie man sieht, wird beim ersten mal die Seite zweimal aufgerufen, und dadurch entsteht der Fehler.
Hat das irgendwas mit dem referer zu tun?

Oder kann es sein, dass etwas am Template falsch ist, den wenn ich den Html-Header weglasse, dann klappt es.

Danke für eure Antworten.

Gruß & Danke
Martin
 
Zuletzt bearbeitet:
Hi,

kann es sein, das du eine .htaccess verwendest, die irgendwas auf deine index.php umleitet (z.B. error document 404 oder dergleichen)? Wenn ja, ist es evtl. möglich, dass das Favicon (was bei manchen Browser versucht wird, zu laden) auf die index.php los geht, weil keines da ist?

Irgendwas in der Richtung wird es wohl sein.
 
Zuletzt bearbeitet:
Hi,

habe die .htaccess bisher noch nicht verwendet, dass kann es also wohl nicht sein.

Habe jetzt noch ein bisschen rumgespielt, und dabei rausgefunden, dass es geht wenn ich den Doctype und die meta-tags auskommentiere.

Finde das Problem extrem komisch.

Kennt sich jemand damit aus?

Gruß & Danke
Martin
 
Zurück