1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Aufenthaltszeit in php Variable speichern

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Applefan88, 25.01.07.

  1. Applefan88

    Applefan88 Gast

    Hallo,
    kann mir einer sagen, wie man die Zeit, die ein User auf einer Website verbracht hat in einer Variable von php Speichern kann.
    Ich wollte eine Art Abrechnungsverfahren erstellen, wobei im Hintergrund die Zeit bis zum schließen der Seite gemessen wird und anschließend das Guthaben - der Zeit gerechnet wird.

    Oder noch besser wäre es, wenn das ganze in Echtzeit berechnet werden könnte z.B. mit Javascript. Ich habe aber leider keine Ahnung wie ich das nun bewerkstelligen kann, da ich von Javascripten keine Ahnung habe. Kann mir einer helfen?
     
  2. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Wenn Du mit Hilfe von JavaScript Zeitberechnungen anstellst, bist Du immer auf Gedeih und Verderb der möglicherweise verstellten Uhr des Clients angewiesen. Daher ist das mit der Messung per PHP gar keine abwegige Idee und geht so:

    1. Jedes eigenständige Script enthält als erste Anweisung session_start();
    2. Jetzt kannst Du innerhalb des superglobalen Arrays $_SESSION[] beliebige Werte speichern, zum Beispiel:
    Code:
    <?
    
    session_name('apfelfan88_session');
    session_start();
    $_SESSION['Startzeit'] = (!isset($_SESSION['Startzeit'])) ? time() : $_SESSION['Startzeit'];
    ?>
    
    Jetzt hast Du, falls nicht bereits in der User-Sitzung gesetzt, die aktuelle Zeit gespeichert und kannst diese später hervorzaubern.
     
  3. Applefan88

    Applefan88 Gast

    Vielen Dank,
    aber ginge es auch so, dass wenn z.B. 60 min abgelaufen sind die Seite eine Fehlermeldung ausgibt und der Client neues Guthaben erwerben muss. Dass Php einen Countdown zählt z.B. 5 € = 60 Min. ?
     
  4. MACRASSI

    MACRASSI Gelbe Schleswiger Reinette

    Dabei seit:
    21.11.04
    Beiträge:
    1.754
    Klar, mit ner if und ner for schleife oder so... :)

    Gruß Rasmus
     
  5. Applefan88

    Applefan88 Gast

    ich bräuchte einen Timer in PHP, der z.B. 60 Min läuft, kann mir einer ein Beispiel geben?
     
  6. mfkne

    mfkne Weisser Rosenapfel

    Dabei seit:
    03.04.06
    Beiträge:
    776
    Das willst Du nicht wirklich, denn dafür müsste das Script 60 Minuten lang laufen.
     
  7. Applefan88

    Applefan88 Gast

    Aber es muss doch eine Möglichkeit geben den Zugriff auf eine Seite zeitlich zu begrenzen?
     
  8. Applefan88

    Applefan88 Gast

    Ich habe so etwas gefunden, kann man damit nicht etwas anfangen?

    Code:
    <script type="text/javascript">
     var s=0
     function Timer(){
      document.formel7.time.value=s;
      s++;
      window.setTimeout('Timer()',1000) // Pause
     }
    </script>
    
    <body onLoad="Timer()">
    
    <form name="formel7">
     <input type=text size=6 name="time">
    </form>
    
    
    z.B: Wenn in der input text box 1000 gezählt wurde wird die seite geschlossen!
    Das muss doch zu machen sein?
     
  9. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    In diesem Fall müsste ich lediglich JavaScript abschalten und würde damit den Timer umgehen.

    Hier ist Umdenken gefragt. Im Gegensatz zu Applikationsprogrammierung musst Du hier in Seitendarstellungen denken. Das heißt, in dem Moment, wo der Benutzer die Seite im Browser angezeigt bekommt, ist in aller Regel die Laufzeit Deines Skriptes bereits beendet, denn die Darstellung im Browser ist ja das Ergebnis Deiner Serverprogrammierung (Ausnahme: AJAX, was aber auch wiederum mit JavaScript einhergehen muss).

    Du kannst demnach nicht einfach ein PHP-Skript schreiben, welches nach 60 Minuten den Browser anbimmelt, denn wie soll es diesen im WWW ausfindig machen? Daher prüft man einfach die letzte Zugriffszeit, die man via Cookie auf dem Rechner des Clients speichert. Kommt derselbe Browser-Client wieder vorbei, kann man die letzte Zugriffszeit durch das Auslesen des Cookies und durch das Zuordnen zu einer Sitzung ermessen. Klickt der Besucher mal wieder auf einen Link und ist der letzte Klick zu lange her, wird nun ein Ausweg angezeigt, da die Laufzeit der Sitzung überschritten wurde (Session Time-Out).

    Im Einzelnen geht das so, wie schon oben beschrieben:
    Code:
    <?php
    
    session_name('apfelfan88_session');
    session_start();
    
    $maximale_sitzungsdauer = 3600; // Sekunden
    $jetzt = time();
    
    if (isset($_SESSION['letzter_zugriff'])) {
        $differenz = $jetzt - $_SESSION['letzter_zugriff'];
        if ($differenz > $maximale_sitzungsdauer) {
             header('Location: http://go.disney.com/');
             exit(),
        }
    } else {
        $_SESSION['letzter_zugriff'] = time();
    }
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Diese Seite - kein Name</title>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
    </head>
    <body>
    <p>BLA</p>
    </body>
    </html>
    
     
    Nathea und amarok gefällt das.
  10. Applefan88

    Applefan88 Gast

    wow, vielen dank das dürfte schon reichen! :-D
     
  11. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Cookies deaktivieren (alternativ: löschen) und die SID in der URL entfernen. Schon erzeugst du eine neue Session und damit wird der Startzeitpunkt neu gesetzt...
     

Diese Seite empfehlen