Hi, bin neu hier und nich sooo bewandert in html, php usw…
'N Kumpel von mir hat mir mit Filezilla und bplaced alles eingerichtet damit ich Daten hochladen kann und zum Download online stellen kann.
Jetzt wollte ich aber gerne wissen ob ich irgendwie, irgendwo einen Download Counter einbauen kann, damit ich sehen kann wie oft die Datein geladen wurden. (Einen der für alle zählt, wenn’s geht?!)
Hab schon gesucht hier im Forum aber nichts gefunden bzw. verstanden
Google gab mir das hier drweb.de/magazin/sicherer-do … r-mit-php/
Aber ich hab kein Plan wie das funktionieren soll bzw. wo ich was einsetzen soll?!
Hoffe mir kann jemand helfen?!
hier hab ich kurz geschriebn, der zählt die Downloads und packt den Counterwert in eine externe Datei. Du musst ein Verzeichnis namens “downloads” erstellen, in das packst du die Datei zum Downloaden z.B. “bild.jpg” und die Counterwert Datei “bild.jpg.db”. Jede Datei zum Downloaden muss eine einzelne Datenbankdatei haben, immer nach dem schema “downloaddatei.db”.
<?php
$download=$_GET['id']; //liest URL id aus
if (file_exists("downloads/".$download.".db") && file_exists("downloads/".$download)) //prüft ab db-datei und download-datei existiert
{
$file=file_get_contents("downloads/".$download.".db"); //liest db-datei aus
$file++; //erhöht counterwert
file_put_contents("downloads/".$download.".db", $file); //schreibt neuen counterwert in db-datei
header("Content-Type: application/octet-stream"); //sendet dem browser die info, dass es sich um einen download handelt
header("Content-Disposition: attachment; filename=".$download); //sendet dem browser die datei
readfile("downloads/".$download); //gibt Datei aus
}
?>
[quote=„sencire“]Oh, cool…vielen Dank!
Wo muss ich den „Download Ordner“ denn erstellen? Bei Filezilla?
Und wo muss der Code denn hin? [/quote]
Du musst eine php datei erstellen und die dann im normalen verzeichniss kopieren und dann noch einen ordner(in FIlezilla) mit dem namen download erstellen.
file_exists($dateipfad)
fragt ab ob der angegebene Dateipfad existiert.
wird hier zweimal in der if-Abfrage verwendet, und mit einem && (AND) verknüpft
file_get_contents($dateipfad)
liest den kompletten Inhalt der Datei in eine Variable
file_put_contents($dateipfad, $inhalt)
speichert den Inhalt der Variable im zweiten Parameter in die Datei die
im Dateipfad angegeben ist. Dabei wird der alte Dateiinhalt komplett überschrieben.
header($zeile)
ist eine Funktion welche verschiedene HTTP-Header Zeilen hinzufügt.
Da per HTTP nicht nut HTML Seiten versendet wird, sondenr auch Grafiken und alle
Möglichen anderen Dateien, kannm an hier sogar den Dateityp angeben.
Mehr zu HTTP gibts es auf Wikipedia de.wikipedia.org/wiki/HTTP
readfile($dateipfad)
Liest den gesamten Textinhalt aus der angegebenen Datei und fügt an der Stelle,
Wo die funktion angewendet wird, in die Ausgabe. (Binarysafe)
Übrigens würde ich neben Content-Type und Content-Disposition noch die DAteigröße mit Content-Length angeben:
$filesize = filesize("downloads/".$download);
header("Content-Length: ".$filesize);
Sonst kommt der Webserver oder PHP oder wer auch immer dafür veranwortlich ist, auf die Idee die Datei per Transfer-Encoding: chunked zu senden, was dazu führt, dass der Browser nicht erkennt, wie lange der Download dauern wird.
Mit der Angabe der Dateigröße, kann der Browser die Wartezeit wie bisher anzeigen lassen.
Sehr schön, danke schonmal für die Hilfe.
Jetzt müsste ich nur noch wissen wie ich’ne php-Datei erstelle?!
Einfach in Word den Code kopieren und speichern und dann .php anhängen??
Also pack ich die php-Datei (wenn ich sie hätte) in mein normales Verzeichnis bei Filezilla, wo jetzt die Datein drinne sind. Mach dann einen Ordner der „Download“ heißt und schiebe die Datein da rein,ja?! (ohne die php)
Wie schnell ging das denn, danke!
Wie sieht der Code denn jetzt genau aus, mit dem was BALMUNG geschrieben hat?!
Muss das da unter oder direkt daneben? Und wo muss ich die Filegröße eintragen?
Sooorryyyy ich bin’n richtiger Anfänger…
Im PHP-Script auf der vorherigen Seite wurde der Ordner überall “downloads” genannt, also musst du den, wenn du den in FileZilla anlegst, auch haargenau so benennen.
Der Webspace ist ein Linux System (kein Windows), von daher ist die Unterscheidung zischen Groß- und Kleinschreibung wichtig.
Außerdem:
Du packst den PHP Code nicht in "Word"
sondern öffnest am besten den Editor (Start -> Zubehör -> Editor) und fügst dort den PHP Code ein.
beim Speichern wählst du erst unten bei Dateityp: “Alle Dateien” aus, und gibts ihm dann den Namen “download.php” oder was ähnliches.
Speicherst die Datei ab, und lädst sie dann wie du selber schon beschrieben hast, in das Verzeichnis hoch (per FileZilla).
Was du beim einfügen im Editor noch beachten musst:
vor dem “<?php” am Anfang des Script darf absolut kein Leerfeld, und keine leere Zeile sein.
sonst wird es einen Fehler wegen den “header()” Befehlen geben.
Und um keine eventuellen Probleme mit den downloads zu haben, sollte auch am Ende nach dem “?>” keinerlei Leerfelder oder Leerzeilen folgen.
puhh alles klar, vielen dank.
Ich steig da aber immer noch nich ganz durch.
Ich hab’ne rar Datei die heißt Soundcheck EP. (Später kommt noch MukkeMixtape dazu)
Wo im Code muss ich denn Soundcheck EP einsetzen?
Und was is damit gemeint: "…in das packst du die Datei zum Downloaden z.B. “bild.jpg” und die Counterwert Datei “bild.jpg.db”???
Muss ich da noch ne Datei erstellen? Oder einfach nur so benennen im Code?
Und muss ich für jede Datei dann einen neuen Code nehmen??
nein
du lädst die datei, die du zum download freigeben willst, in den downloads ordner direkt hoch.
Dann erstellst du noch eine leere Datei (z.b. ein leeres Textdokument) und nennst die datei um und hängst noch als Erweiterung .db ran.
Damit das alles einwandfrei klappt, solltest du auf deinem windows System vielleicht die Dateierweiterungen einblenden:
Öffnest einen Order (irgendeinen, Arbeitsplatz, oder Eigene Dateien) und gehst oben im Menu auf: Extras -> Ordneroptionen…
Dann erscheint ein Fenster, in dem du oben auf den Reiter “Ansicht” wechselst.
Dann müsstest du einen Haufen auswahlmöglichkeiten sehen, wo du haken setzen kannst.
Du suchst raus: “Erweiterungen bei bekannten Dateitypen ausblenden” und entfernst den Haken, falls er gesetzt ist.
Drückst “OK” oder “Übernehmen”.
Jetzt sollten die Dateierweiterungen deiner Dateien zu sehen sein.
wenn du z.b. ein Bild hast, würde das Bild nicht mehr “Bild” heißen, sondern wahrscheinlich “Bild.jpg”
Hier noch mal die Vorgehensweise an einem Beispiel:
Du lädst Bild.jpg hoch in den downloads Ordner.
Erstellst eine Leere Datei die die dann in “Bild.jpg.db” benennst.
Diese lädst du in das selber Verzeichnis hoch (also auch in den downloads Ordner)
jetzt sollte deine Datei über den link:
erreichbar sein (“deinbplacedname” natürlich umändern).
du erstellst also für jede Datei, die du zum Download freigeben möchtest, eine zweite Datei, die genau so heißt wie die Datei, nur eben mit der zusätzlichen Erweiterung “.db”
nein du musst nichts im PHP-Skript ändern, der ist ja dynamisch.
Du hast deine Datei „SoundcheckEP.rar“. Diese packst du in den Ordner „downloads“. Jetzt erstellst du mit deinem Editor eine Textdatei namens „SoundcheckEP.rar.db“ mit dem Inhalt 0. Diese kopierst du ebenfalls in den Ordner „downloads“.
Der Skript ist wie gesagt dynamisch, du musst nicht für jede Datei einen eigenen Skript schreiben.
Wenn du eine weitere Datei zum DL anbieten willst, angenommen „SoundcheckEP2.rar“ kopierst du sie auch in den „downloads“-Ordner und erstellst wieder eine Textdatei mit dem Inhalt 0. Diese heißt dann „SoundcheckEP2.rar.db“
So ich habe meinen Ordner bei Filezilla da is noch so’ne ftpqouta datei drinn.
Noch’ne rar Datei und meine “download.php” Datei.
Dann der Ordner “downloads”. In dem die “Soundcheckep” rar Datei und “Soundcheckep.rar.db”.
(Die hat so komische Zahnräder als Bild)
Dann nehme ich das hier von Balmung: deinbplacedname.bpalced.net/down … d=bild.jpg
Und machen daraus: bremer.bpalced.net/downloads.php … heckep.rar
Aber es geht nicht?!
EDIT: ahhh download geht jetzt. aber wo seh ich wie oft das geladen wurde?
Und ist das nich blöd wenn man durch bremer.bplaced.net/ all die Datein sehen und laden kann?? (also die php und rar.db. Datein?!)