Lutz: Problem mit PHP und Sessions

Hallo,

ich hatte das Problem schon einmal gepostet, da wusste ich allerdings noch überhaupt nicht, wo ich suchen muss. Ich hoffe ihr könnt mir jetzt helfen, nachdem ich ein paar mehr Infos dazu habe:

Meine Absicht war es, einen Counter zu schreiben, der jeden Benutzer nur ein mal zählt. Konkret sieht es so aus, dass der Counter jede Person einmal zählt und dann erst wieder, wenn diese Person 3 Stunden lang nicht auf der Seite war. Realisieren wollte ich das ganze mit Sessions.

Im Vorfeld:
session.use_cookies           On
session.use_only_cookies      Off
session.use_trans_sid         Off

Wenn Ihr noch mehr Infos braucht, dann fragt mich!

Den Quelltext findet ihr hier:
http://www.lutzfechner.de/rf_php/test.txt

Die Seite sieht dann so aus:
http://www.lutzfechner.de/rf_php/index.php

So, wie ihr seht klappt das nicht so ganz, der Counter countet wunderbar, und countet sogar dann nicht, wenn man manuell die unten auf der Seite stehende Session-ID übergibt, also mit:

http://www.lutzfechner.de/rf_php/index.php?PHPSESSID=<sessionid>

Mein Problem ist halt nur, dass PHP irgendwie beim refreshen der Seite nicht merkt, dass schon eine Session besteht, und immer toll eine neue anlegt, und die natürlich wieder zählt, warum nur?

Danke für eure Mühen!
Lutz

  1. Moin!

    RTFM!

    http://de2.php.net/manual/de/function.session-start.php

    <zitat aus dem manual:>
    Anmerkung:  Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird.
    </zitat>

    Wie wäre es also damit, die Session erst zu starten und dann mit HTML-Ausgaben zu beginnen?

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. N'Obend

      Wie wäre es also damit, die Session erst zu starten und dann mit HTML-Ausgaben zu beginnen?

      Jup, recht häufig zu sehender Fehler, den PHP-Code erst im HTML-<head> anfangen zu lassen.

      @Lutz
      Schreibe generelles PHP ganz an den Anfang der Datei (also noch über den Doctype). Das gilt sowohl für alles die Session betreffende, als auch z.B. das error_reporting.

        
      <?php  
        error_reporting(E_ALL);  
        session_set_cookie_params(10800);  
        session_start();  
      ?>  
      
      ~~~~~~html
        
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >  
      <head>  
      ...
      

      Außerdem hättest du gerne in deinem Thread bleiben können, da ist noch genug Platz!

      Tschö,
      dbenzhuser

      --
      Heute in der Reihe „unser Ranking soll schöner werden“:
      Gefälschte Musikinstrumente Marke Bessons
    2. RTFM!

      Hab ich gemacht, habe aber dieses "vor jeglicher Ausgabe" auf PHP bezogen, sorry!

      MFFG (Mit freundlich- friedfertigem Grinsen)

      MSDGHGJGE (Mit sehr dankbaren Grüssen, hat geholfen, jetzt geht es)
      Lutz

  2. Hi!

    Warum bleibst du nicht in deinem alten Thread? In diesem habe ich dir bereits in meinem Posting von 21:18 Uhr erklärt, woran es liegen könnte. Dieser Verdacht hat sich ja nun mehr durch den PHP-Code bestätitgt.

    Grüße,
    Fabian St.