Download mit PHP starten und zählen Zurück zur Übersicht
Über den Autor
Hallo spacemans,
hier also mein erstes Tutorial exklusiv für Spacequadrat, um der Gemeinde hier ein bißchen was von dem zurückzugeben was sie für mich/uns tun -ohne dafür etwas zu verlangen und mit besserem Support als mancher Paidhoster.
Was wird hier gezeigt?
Es soll die Möglichkeit geschafft werden, einem Client einen Download anzubieten der gezählt wird.
Weitere vorteile:
* Die realen namen und loacations der Files sind nicht ersichtlich (kann in punkto Sicherheit eine Rolle spielen).
* Übersichtlichkeit des eigenen webspaces (downloads alle in einem Folder, bequem über eine id ansprechbar).
* Korrekt übergebener Contentheader führ dazu, dass das file auch bei bekannter extension nicht geeöffnet wird, sondern immer der
download dialog getriggert wird.
Voraussetzungen: Kenntnisse in PHP wären nicht schlecht. Geringe Kenntnisse mit mySQL und dem PHPmyAdmin (wird von Spacequadrat
eingesetzt) zum Erstellen einer kleinen Datenbank.
Wie siehts aus?
Eine download section könnte dann so aussehen:
Die Diskette zeigt dann auf einen Link der so zb. so aussieht: "/download.php?id=1", klickt man ihn an, öffnet sich der download
dialog und der Counter wird für diesen Download hochgezählt..
Und los gehts:
1) Erstellen der Download-Datenbank.
Hier werden dann alle Files eingetragen die zum DL bereitgestellt werden sollen, zusammen mit ihrem Counter.
Logt euch in euren phpMyAdmin ein und erstellt eine neue Datenbank, benamst mit "downloads".
Legt folgende Table an:
Im unteren Bild sieht man die Table mit Beispieleinträgen. Die Felder sind denke ich selbsterklärend.
Hier nur 2 Erläuterungen:
"pathfilename" ....ist der Pfad+RealName auf eurem Webspace wo das File liegt. Liegt das file "x.txt" zB in einem Directory "downloads" dann steht hier: "downloads/x.txt". Das script wird dann im rootDir liegen und braucht diese Information um das File an den Client zu schicken.
"trivialname" ....ist ein einfacher string, der dann beim client angezeigt werden soll. Anstatt das dann auf der Website zB dasteht:
Download MyFile_comp2_RC1v2.15win.exe kann man dadurch etwas schöner anzeigen lassen: Download MyFile.exe (2nd Compilation, Release1, WIndows Version 2.15)
2) Das Downloadscript:
Mit dieser Datenbank, wo alle Files eingetragen werden, braucht man nur noch ein nettes PHP script, dass
einem die Files liefert. Alle Files sind ja über die DB über die einzigartige id ansprechbar.
Dieses script von mir, könnt ihr in euer root Dir auf euren Webspace legen.
Ich poste mal das script, die kommentarte zur erklärung sind dabei.
Code:
//korrekter aufruf mit id? wenn nicht dann abbruch //zugangsdaten für die DB, können auch ausgelagert werden und per require eingebunden werden $host = 'localhost'; $pass = 'xxx'; $user = 'webxxxsqlx'; $db = 'webxxsqlx'; //counter status abfragen und um 1 erhöhen $sql = "SELECT `count` FROM `downloads` WHERE `id` = '".$_GET['id']."'"; $count=$row['count']; $count++; //neuen counterwert in der DB aktualiseren $sql = "UPDATE `downloads` SET `count`= '".$count."' WHERE `id` = '".$_GET['id']."'"; //real filenem + path auslesen $sql = "SELECT `pathfilename` FROM `downloads` WHERE `id` = '".$_GET['id']."'"; $pathfilename=$row['pathfilename']; //start download //dieser header ist wichtig, damit sich der download-dialog auf jedenfall öffnet readfile("$pathfilename"); ?>
Stehen die Downloads in der DB, kann man sie schon anbieten: mit einem link auf dieses script, wo man die id des entsprechenden file dranhängt. zb:
Zusätzlich kann natürlich der counter und der trivilaname vorher abgefragt werden, um dies beim entsprenchendem download-item darzustellen. Das sieht dann echt nett aus und bringt euch und euren Besuchern Infos zB über die Beliebtheit der möglichen Downloads.
Ich hoffe, das Tutorial bringt euch was. Für eine "live-demo" schaut mal auf miener site vorbei (section technovicing), dafür hab ich das eigentlich gecoded.
cu mm