Empfehlungen: Erweiterte Suche

Benutzer Tracking

Anleitungen und Quellcode-Auszüge die den Start vereinfachen sollen.

Benutzer Tracking

Beitragvon havanna » Fr 24. Apr 2009, 23:33

Für eine Anwendung musste ich das Benutzerverhalten aufzeichen. Nachfolgend eine Beschreibung, wie ich das gelöst habe.

Die nachfolgend genannten Codes sind z.T. verkürzt, da sie bei mir tatsächlich etwas anders aufgebaut sind (weitere Funktionen die hier nicht zur Sache tun).
Im AppController nütze ich den Callback beforeRender. Hier ist anzumerken, dass ich die Authake-Komponente für die User-Verwaltung verwende. Ich denke das kann jeder auf seine Anwendung übetragen:

Code: Alles auswählen
class AppController extends Controller {

  var $components = array('Session', 'RequestHandler', 'Tracking');
  var $helpers = array('Html', 'Form');

  function beforeRender(){
      // nur aufzeichnen, wenn der User eingeloggt ist
      if($this->Session->read('Authake.login')) {
        $savedata = array('session' => $this->Session->id(),
                          'ipaddress' => $this->RequestHandler->getClientIP(),
                          'url' => $this->here,
                          'user' => $this->Session->read('Authake.login'));
        $this->Tracking->saveTracking($savedata);
      }
  }
 


Die Funktion saveData ist in der Komponente Tracking definiert:
Code: Alles auswählen
class TrackingComponent extends Object {

  function saveTracking($data) {
 
    App::import('Model', 'tracking');
    $this->Tracking = new Tracking();
   
    $this->Tracking->save($data);
   
  }
}


o.k. das Modell Tracking ist im Moment ziemlich blank:

Code: Alles auswählen
  class Tracking extends AppModel {

  }


Die Tabellendefinition sieht wie folgt aus:
Code: Alles auswählen
CREATE TABLE IF NOT EXISTS `trackings` (
  `id` int(11) NOT NULL auto_increment,
  `session` varchar(255) collate utf8_unicode_ci NOT NULL,
  `ipaddress` varchar(15) collate utf8_unicode_ci NOT NULL,
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `url` varchar(255) collate utf8_unicode_ci default NULL,
  `user` varchar(50) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
 


Bild

Wie man sieht, funktioniert das auch ganz gut.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Benutzer Tracking

Beitragvon paul » Sa 25. Apr 2009, 10:42

Sieht spannend aus! Hast du auch ein konfortablen View um die gesammleten Benutzerdaten auszuwerten?
Mehr Webentwicklung: http://www.interaktionsdesigner.de Mehr Ultimate Frisbee: http://www.frisber.de
Benutzeravatar
paul
 
Beiträge: 13
Registriert: So 15. Jun 2008, 20:34
Wohnort: Berlin
CakePHP-Version: 1.3
OS: MacOSX

Re: Benutzer Tracking

Beitragvon euromark » Sa 25. Apr 2009, 10:45

sinnvoll ist, dass dopplungen am besten nich in der auflistung vorkommen, wenn es z.b. um "wer ist online" geht
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Benutzer Tracking

Beitragvon havanna » Sa 25. Apr 2009, 20:36

Hallo Paul, hallo Mark,

zur Frage von Paul: Bin ich gerade dran. Ich möchte dann die Auswertung außerdem als Excel-Download bereitstellen.

@Mark: Es geht immer darum welchen Zweck es hat. In diesem Fall geht es um einen Makler-Verbund. Erst wenn ein Makler die Detailseite zu einem Objekt aufruft, das nicht zu seinen Objekten gehört, wird der Aufruf gespeichert - denn für diesen Abruf muss er bezahlen.
Ich implementiere hier einfach etwas, was mein Auftraggeber so haben möchte. Aber ihr versteht sicher, dass dazu hier noch ein paar Teile fehlen die aber nicht Sinn und Zweck des Beispiels waren. Ich denke die "Ausschmückung" kann jeder gestalten wie er möchte.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Benutzer Tracking

Beitragvon stulka » Mi 6. Mai 2009, 12:18

finde ich schon sehr gut, was du hier geschrieben hast, danke :-)
stulka
 
Beiträge: 5
Registriert: Fr 24. Apr 2009, 06:02


Zurück zu Tutorials und Snippets

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast