tracking von downloads

Gesperrt
trapperKarl
Beiträge: 5
Registriert: Do 14. Sep 2006, 09:34
Wohnort: Düsseldorf
Kontaktdaten:

tracking von downloads

Beitrag von trapperKarl »

hallo!

für einen kunden erstelle ich gerade eine webseite mit contenido. eine der vorgaben ist, dass getrackt wird, wann welcher kunde auf welche datei (download) zugreift.

---

meine idee:

in der ausgabe des moduls "Text HTML (2)" die vorkommenden links die mit /upload anfangen mit einem link auf redirect.php auszutauschen

als parameter werden uid und link übergeben

klickt der user auf einen download link werden mit der redirect.php alle nötigen daten in eine tabelle geschrieben (wie datetime, uid, datei)

dann wird die datei per header("Location: http://FILENAME/"); geöffnet

---

habe schon mit preg_replace versucht zu arbeiten.

wäre es nicht einfacher bei erstellung eines neuen links zu einer datei diesen gleich mit redirect.php?filename&uid zu ersetzen?

finde leider den code nicht, der bei auswahl einer datei den link erzeugt.

---

wer kann mir den nötigen tipp geben? oder denke ich zu kompliziert?

vielen dank für eure bemühungen im voraus!
Trapper
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

du könntest versuchen die hier umzuschreiben:
http://contenido.org/forum/viewtopic.php?t=11165
counten tut sie schon
trapperKarl
Beiträge: 5
Registriert: Do 14. Sep 2006, 09:34
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von trapperKarl »

japp, cooles modul!

allerdings ist es glaube ich jetzt mehr arbeit,
das modul einzusetzen als nen eigenen tracker zu bauen ...

glaube ich :)
trapperKarl
Beiträge: 5
Registriert: Do 14. Sep 2006, 09:34
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von trapperKarl »

huhu!

kann mir denn jeamand sagen, wo der html editor den link konstruiert, wenn ich den mit dem ketten symbol erstelle?

danke :)=
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

um die links dort zu manipulieren kannst du eine chain einsetzen.

das sind die beiden benötigten chain punkte:

Code: Alles auswählen

$_cecRegistry->addChainFunction("Contenido.Content.CreateArticleLink", "deineFunktionZurURLÄnderung");
$_cecRegistry->addChainFunction("Contenido.Content.CreateCategoryLink", "deineFunktionZurURLÄnderung");
trapperKarl
Beiträge: 5
Registriert: Do 14. Sep 2006, 09:34
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von trapperKarl »

hy!

dankeschön :)

bin allerdings schon fast fertig, werde das gleich mal posten ...
trapperKarl
Beiträge: 5
Registriert: Do 14. Sep 2006, 09:34
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von trapperKarl »

so, ich bin jetzt soweit durch, ist zwar alles quick & dirty, aber es läuft. (denke ich)

in der datenbank folgende tabellen anlegen:

Code: Alles auswählen

CREATE TABLE `con_tracker` (
  `id` int(255) NOT NULL auto_increment,
  `uid` int(255) NOT NULL default '0',
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  `category` int(255) NOT NULL default '0',
  `article` int(255) NOT NULL default '0',
  `download` varchar(255) NOT NULL default '',
  `sub1` varchar(255) NOT NULL default '',
  `sub2` varchar(255) NOT NULL default '',
  `sub3` varchar(255) NOT NULL default '',
  `sub4` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=251 ;
und

Code: Alles auswählen

CREATE TABLE `con_tracker_redirect` (
  `id` int(255) NOT NULL auto_increment,
  `file` varchar(255) NOT NULL default '',
  `uid` int(255) NOT NULL default '0',
  `sub1` varchar(255) NOT NULL default '',
  `sub2` varchar(255) NOT NULL default '',
  `sub3` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=101 ;
das modul Text HTML (2) habe ich so erweitert:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Text HTML
* Author(s)   :     Andreas Lindner
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     05.08.2005
************************************************/
$zeile = "CMS_HTML[2]";
$output = "CMS_HTML[2]";
$user = $auth->auth["uid"];
$needle[0] = 'upload';

$pattern = '=^(.*)<a(.*)href\="?(\S+)"([^>]*)>(.*)</a>(.*)$=msi';
 while (preg_match($pattern, $zeile, $text))
 {
  $link = $text[3];
  $sql_write_tracking = "INSERT INTO con_tracker_redirect(file, uid, sub1, sub2, sub3) 
  VALUES ('$link', '$user', '', '', '')";
  $mysql_con_tracker = $db->query($sql_write_tracking);
  $mysql_con_last_id_query = 'SELECT LAST_INSERT_ID()';
  $mysql_con_last_id = $db->query($mysql_con_last_id_query);
  $mysql_id = mysql_fetch_array($mysql_con_last_id);

  $current_redirect = "counterredirect.php?download=";
  $current_redirect .= $mysql_id[0];
$current_redirect .= "&uid=";
$current_redirect .=  $user;

if( strpos($link,'upload') ){
  $output = str_replace($link, $current_redirect, $output);
}else{
$output = $output;
}

  /* $zeile neu bauen */
  $zeile = $text[1].$txt[6];
}

echo "<p>". $output ."</p>";
?>
und die datei counterredirect.php sieht so aus:

Code: Alles auswählen

<?
include_once ("config.php");
include_once ($contenido_path."includes/startup.php");

cInclude("includes", "functions.con.php");
cInclude("includes", "functions.con2.php");
cInclude("includes", "functions.api.php");
cInclude("includes", "functions.pathresolver.php");
cInclude("classes", "class.frontend.users.php"); 
cInclude("includes", "functions.general.php");
cInclude("classes", "class.dbfs.php");

$oFEUser = new FrontendUser; 
$db      = new DB_Contenido;
$download = $_GET["download"];
$uid = $_GET["uid"];

$oFEUser->loadByPrimaryKey($uid);

$time = date("Y-m-d H:i:s");
$forename = $oFEUser->getProperty("contact", "firstname"); 
$surname = $oFEUser->getProperty("contact", "lastname"); 

$sql_select_download = "SELECT * FROM con_tracker_redirect WHERE id = $download";
$sql_select_download = $db->query($sql_select_download);
$download = mysql_fetch_array($sql_select_download);
$file = $download["file"];

$sql_delete_download = "DELETE * FROM con_tracker_redirect WHERE id = $download";
$sql_delete_download = $db->query($sql_delete_download);

$sql_write_tracking = "INSERT INTO con_tracker (uid, time, category, article, download, sub1, sub2, sub3, sub4) VALUES ('$uid', '$time', '', '', '$file', '$forename', '$surname', '','')";
$mysql_con_tracker = $db->query($sql_write_tracking);

header("Location: ". $file . ""); 


?>
man kann ja mal darüber diskutieren ;)
grüße!
Gesperrt