Kann meine Downloads nicht ablesen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abbrechen
aktualisieren
anzahl
april
array
beispiel
code
datei
datenbank
datensatz
download
file
host
http
liste
mime
null
tabelle
typ
type
-
Hi Leute,
Wenn ich folgenden Link eingebe:
http://www.infinitysounds.de/Template/dlcounter/DrWeb_DownloadZaehler.php?d=1&do=Count
sollte ich eigentlich die Anzahl meiner Downloads sehen können...
kann ich aber nicht.
Grüße,
InfinitySounds
Beitrag zuletzt geändert: 24.6.2011 14:46:23 von infinitysounds -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
infinitysounds schrieb:
Ich auch nicht! Da es sich um ein phpSkript handelt dass aufgerufen wird kann man den Fehler nur finden wenn man den Code dieses (und evtl. aufgerufener) Skripte sieht. Daher solltest du den Skriptcode hier auch zugänglich machen.
Hi Leute,
Wenn ich folgenden Link eingebe:
http://www.infinitysounds.de/Template/dlcounter/DrWeb_DownloadZaehler.php?d=1&do=Count
sollte ich eigentlich die Anzahl meiner Downloads sehen können...
kann ich aber nicht.
Grüße,
InfinitySounds -
Konfig:
<?php if(!defined('YD_FW_NAME')) die('Diese Datei darf nicht allein aufgerufen werden.'); $db = array(); // Typ des Datenbank-Servers $db['type'] = 'mysql'; // Name der Datenbank $db['db'] = 'db_199720_1'; // Name der Tabelle $db['table']= 'drweb_zahhler'; // Benutzername $db['user'] = 'USER9620'; // Dessen Kennwort $db['pass'] = 'hlix'; // Datenbank-Host, in der Regel localhost $db['host'] = 'mysql.lima-city.de'; ?>
Dateien:
<?php if(!defined('YD_FW_NAME')) die('Diese Datei darf nicht allein aufgerufen werden.'); $dl_ids = array(); // Jede Download_ID, die Sie benutzen möchten, muss einen Pfad *ab wwwroot* zur einer Datei besitzen. // Im Beispiel sind das die IDs 1 und 2 // Aus Sicherheitsgründen werden NUR diese IDs werden vom Script akzeptiert $dl_ids[1] = "http://download.lima-city.de/infinitysounds/blubbcast%20folge%202.mp3"; // In der Datei /lib/YDFramework2/YDClasses/YDFileSystem.php können Sie sehen, welche Mime-Typen // definiert sind. Fehlt ein Mime-Typ, zum Beispiel der für OpenDocument-Dateien, ergänzen Sie die // Liste wie im folgenden Beispiel. Liste mit Mime-Typen: http://www.iana.org/assignments/media-types/ $GLOBALS['YD_FS_MIME_MAPPING']['odt'] = "application/vnd.oasis.opendocument.text"; ?>
Aufruf:
<?php // April 2006 von Rene Schmidt für DrWeb.de // Wenn Sie die gezaehlten Downloads in einem anderen Skript weiterverarbeiten wollen, // gehen Sie wie im folgenden Beispiel gezeigt vor. Kommentieren Sie hierfür die Zeile // YDInclude( 'YDF2_process.php' ); // im Skript DrWeb_DownloadZaehler.php aus $proc = false; // Schaltet die Verarbeitung des Skripts durch das Framework ab $id = 20; // Beispiel require 'DrWeb_DownloadZaehler.php'; $dl = new DrWeb_DownloadZaehler($id); printf("Test für Schüssel Nr. %d: %d", $dl->id, $dl->getCount()); ?> Syntax highlighting powered by GeSHi
Hauptcode:
View file DrWeb_DownloadZaehler.php <?php // April 2006 von Rene Schmidt für DrWeb.de // Initialize the Yellow Duck Framework include_once( dirname( __FILE__ ) . '/lib/YDFramework2/YDF2_init.php' ); // Includes YDInclude( 'YDRequest.php' ); YDInclude( 'YDDatabase.php' ); YDInclude( 'YDFileSystem.php' ); YDInclude( 'YDUtil.php' ); require 'DrWeb_DownloadZaehler_Dateien.php'; require 'DrWeb_DownloadZaehler_Konfig.php'; // Class definition for the index request class DrWeb_DownloadZaehler extends YDRequest { var $id = null; var $db = null; // Class constructor function DrWeb_DownloadZaehler($id=null) { /* Wenn keine oder eine leere Download-ID angegeben wurde, abbrechen Ein simpler Trick: Der "cast"-Operator (int) entfernt alle potenziell gefährlichen Inhalte Wir brauchen ja nur eine ganze Zahl. */ if(isset($_GET['d']) && !empty($_GET['d'])) $this->id = (int)$_GET['d']; else if($id === null) trigger_error("Keine oder leere Download-ID", YD_ERROR); else $this->id = (int)$id; // Wenn die ID nicht in der Datei DrWeb_DownloadZaehler_Dateien.php "registriert" wurde, abbrechen if(!isset($GLOBALS['dl_ids'][$this->id])) trigger_error("Die ID {$this->id} wurde nicht registriert.", YD_ERROR); // Initialize the parent class $this->YDRequest(); // Prüfen, ob Zugangsdaten zur Datenbank vorhanden sind. if(!$this->configOk()) trigger_error("Datenbank-Zugangsdaten sind nicht vorhanden.", YD_ERROR); // Datenbank-Verbindung herstellen $this->db = YDDatabase::getInstance( $GLOBALS['db']['type'], $GLOBALS['db']['db'], $GLOBALS['db']['user'], $GLOBALS['db']['pass'], $GLOBALS['db']['host'] ); } // Prüft, ob die Voraussetzungen für dieses Script erfüllt sind function configOk() { return isset($GLOBALS['db']['user']) && !empty($GLOBALS['db']['user']) && isset($GLOBALS['db']['pass']) && !empty($GLOBALS['db']['pass']) && isset($GLOBALS['db']['table']) && !empty($GLOBALS['db']['table']); } // Gibt die Summe der Downloads aus. Das Script wird dann beendet. Aufruf mit /script.php?do=Count&d=ID function actionCount() { print($this->getCount()); exit; } // Liefert die Summe der Downloads zu einer Download-ID. function getCount() { return $this->db->getValue("SELECT dl_sum FROM {$GLOBALS['db']['table']} WHERE dl_id = {$this->id}"); } // Liest eine Datei und gibt sie direkt aus, wenn sie gelesen werden kann. // Die HTTP-Header legen den Dateinamen fest und teilen dem Browser mit, dass ein Dateianhang folgt. function actionDefault() { $file = new YDFSFile($_SERVER["DOCUMENT_ROOT"] . $GLOBALS['dl_ids'][$this->id]); // Fehler ausgeben, wenn die Datei nicht lesbar ist if(!$file->isReadable()) trigger_error(sprintf("Datei %s ist nicht lesbar, bitte Dateirechte anpassen.", $file->getBasename()), YD_ERROR); // Versucht, den Datensatz zu aktualisieren: logUpdate() // Bei Misserfolg existierte die Download-ID wohl noch nicht, also anlegen: logInsert() // Klappt das auch nicht, mit einer Fehlermeldung abbrechen // Im Normalfall existiert die ID aber und es muss nur einmal die Datenbank "angefasst" werden. if($this->logUpdate() < 1 && $this->logInsert() < 1) trigger_error("Fehler beim einfügen einer neuen Download-ID.", YD_ERROR); // Datei an den Browser senden $file->download(null,true); } // Versucht, in einem Schritt einen Datensatz zu aktualisieren. function logUpdate() { return $this->db->executeSql("UPDATE {$GLOBALS['db']['table']} SET dl_sum = dl_sum+1 WHERE dl_id = {$this->id} LIMIT 1"); } // Registriert eine neue Download-ID in der Tabelle function logInsert() { return $this->db->executeInsert($GLOBALS['db']['table'], array('dl_id' => $this->id, 'dl_sum' => 1)); } } (!isset($GLOBALS['proc']) || $GLOBALS['proc'] != false) && YDInclude( 'YDF2_process.php' ); ?>
Es gibt noch mehr, ihr werdet mir es hoffentlich sagen können, welche ihr noch braucht, ich habe (noch) keine Ahnung von php...
EDIT:
Die Datenbankdaten sind nicht richtig.
Beitrag zuletzt geändert: 26.6.2011 21:15:47 von infinitysounds -
Hallo infinitysounds,
ich gehe jetzt mal davon aus, dass die Datenbank korrekt eingerichtet ist.
Um die Sache zum laufen zu bekommen musste ich Folgendes ändern:
In der Datei dlcounter/lib/YD2Framework/YDF2_Init.php in Zeile 40 muss
durchset_magic_quotes_runtime( 0 );
ersetzt werden.ini_set('magic_quotes_runtime', 0);
Die Anzahl sollte man dann mit
also ohne '?do=count' abrufen können.http://www.infinitysounds.de/Template/dlcounter/DrWeb_DownloadZaehler.php?d=1
-
Das Teil ist so extrem aufgeblasen... Total unnötig... Aber okay.. Ist ja auch schon 5 Jahre alt.
Beitrag zuletzt geändert: 27.6.2011 21:10:07 von fabo -
Hallo fabo,
(endlich ein Experte) kennst Du vielleicht eine gute alternative, die nicht so alt ist und die ein absolut Ahnungsloser einfach zum Laufen bekommt? -
Wenn die DoS Attacken enden, beginne ich mit meinen Tutorials in meinem Blog. Dann mach ich direkt mal nen Downloadzähler fertig - Ist ja nix großartiges.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage