Download Counter für eigene Cydia Repo erstellen
Posted by damar1st under Tutorials on Samstag Feb 25, 2012Was benötige ich für den Download Counter ?
- apache httpd, oder ein anderer Server der .htaccess Dateien verwenden kann - Zugang zu einer MYSQL-Datenbank - Grundkenntnisse in PHP und MYSQL - ein Texteditor (bitte nicht Notepad es richtet mehr Schaden an als das es euch hilft)
Los geht’s:
Als erstes erstellen wir eine neue .php Datei mit dem Namen config.php. Diese benutzen wir für spätere Scripte zum Verbinden zur MYSQL-Datenbank.<?php
/*****************************************************
** Title........: Configuration File
** Filename.....: config.php
** Author.......: damar1st
** Homepage.....: http://damarist.de/
** Contact......: info@damarist.de
** Version......: 0.8
** Notes........: This file contains the configuration
** Last changed.: 01.03.2012
** Last change..:
*****************************************************/
$server = "localhost"; //meist localhost
$Benutzer = "Benutzername"; // Benutzername deiner Datenbank einfügen
$Passwort = "Passwort"; // Passwort deiner Datenbank einfügen
$verbindung = mysql_connect ($server, $Benutzer, $Passwort);
mysql_select_db("Datenbankname", $verbindung); // Datenbankname einfügen
?>Als nächstes erstellen wir in der MYSQL eine neue Tabelle. Führt folgende code in der Sql aus:
CREATE TABLE `download` ( `filename` varchar(255) NOT NULL, `dldate` DATETIME, `stats` int(11) NOT NULL, PRIMARY KEY (`filename`) )Jetzt erstellen wir eine counter.php
<?php
/*****************************************************
** Title........: REPO Counter File
** Filename.....: counter.php
** Author.......: damar1st
** Homepage.....: http://damarist.de/
** Contact......: info@damarist.de
** Version......: 0.8
** Last changed.: 01.03.2012
** Last change..:
*****************************************************/
include "../config.php"; // einfügen der Verbindung zur SQL
$filename = mysql_real_escape_string($_GET['file']);
$path = $_SERVER['DOCUMENT_ROOT']."/"; //Pfad zur Datei
$fullPath = $path.$filename; //Pfad zur Downloaddatei
$filetypes = array("deb"); // Unterstützte Dateitypen
if (!in_array(substr($filename, -3), $filetypes)) {
echo "falscher Dateityp.";
exit;
}
if ($fd = fopen ($fullPath, "r")) {
//hinzufügen der Downloadanzahl
$result = mysql_query("SELECT COUNT(*) AS countfile FROM download
WHERE filename='" . $filename . "'");
$data = mysql_fetch_array($result);
$q = "";
if ($data['countfile'] > 0) {
$q = "UPDATE download SET dldate = NOW(), stats = stats + 1 WHERE
filename = '" . $filename . "'";
} else {
$q = "INSERT INTO download (filename, dldate, stats) VALUES
('" . $filename . "',NOW(), 1)";
}
$statresult = mysql_query($q);
//der nächste Teil führt die Datei aus
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
header("Content-length: $fsize");
header("Cache-control: private"); //öffnen der Downloaddatei
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose ($fd);
exit;
?>
Hier gibt es soweit nichts zu bearbeiten. Einfach abspeichern und weiter. Nun öffnen wir wieder den Texteditor und erstellen eine “.htaccess” Datei und tragen dort den Ordner ein in dem unsere deb-Dateien sind “YOURDEBSFOLDER”
RewriteEngine On RewriteRule ^(.*).(deb|zip)$ /YOURDEBFOLDER/counter.php?file=$1.$2 [R,L]
Diese leitet den Zugriff auf eine Downloaddatei über unsere “counter.php” weiter. So nun dürfte unser Counter schon funktionieren. Erstellen wir noch schnell eine download.php zum überpüfen ob alles funktioniert:
<?PHP
/*****************************************************
** Title........: SQL Screen File
** Filename.....: download.php
** Author.......: damar1st
** Homepage.....: http://damarist.de/
** Contact......: info@damarist.de
** Version......: 0.8
** Last changed.: 01.03.2012
** Last change..:
*****************************************************/
include "config.php";
$SQL = "SELECT * FROM download";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result)) {
print $db_field['filename'] . "<BR>" ;
print $db_field['stats'] . "<BR>";
print $db_field['dldate'] . "<BR><BR><BR>";
}
?>
Danach die config.php, download.php und die htaccess ins ROOT-Verzeichniss eurer Repo kopieren und die counter.php in euren “debs” Ordner. Cydia starten und etwas aus eurer Source installieren. Nun navigiert ihr mit eurem Browser zur download.php und wenn ihr alles richtig gemacht habt zeigt sie euch den ersten Eintrag an. Hier noch ein link zu den Beispieldateien

