Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi zusammen,

nach endlosen goolge Stunden bin ich leider noch nicht nach solch einem Script fündig geworden:

Ich suche ein einfaches php script, mit dem ich neber einem angebotenen .mp3 den Counter ausgeben kann, wie oft ein song runtergeladen wurde.

Weiter soll es den tatsächlichen Link "verschleiern", also das man nicht extern darauf verlinken kann (In der art /download.php?=id4 oder so)

MySql Datenbank vorhanden, Textfile Databse auch OK?

Kann mir jemand was empfehlen?

Gruß,

pfc

Geschrieben


$dateiname = ermittle_dateiname($_GET["id"]);
$pfad = "/irgendwas/";

if (is_file($pfad.$dateiname) && file_exists($pfad.$dateiname)) {
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($pfad.$dateiname));
header("Content-Disposition: filename=$dateiname);

@readfile($pfad.$dateiname);

erhoehe_zaehler_um_eins($_GET["id"]);
} else {
echo "<h2>fehlermeldung</h2>";
}[/PHP]

Ansatzweise. Meine Funktionen solltest du durch sinnvolle ersetzen :)

Gruß

Geschrieben

$dateiname = ermittle_dateiname($_GET["id"]);
$pfad = "/irgendwas/";

if (is_file($pfad.$dateiname) && file_exists($pfad.$dateiname)) {
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($pfad.$dateiname));
header("Content-Disposition: filename=$dateiname);

@readfile($pfad.$dateiname);

erhoehe_zaehler_um_eins($_GET["id"]);
} else {
echo "<h2>fehlermeldung</h2>";
}[/PHP]

Ansatzweise. Meine Funktionen solltest du durch sinnvolle ersetzen :)

Gruß

hier wurde alles gesagt!

eine kleine verbesserung noch, da ein " gefehlt hat.

[PHP]
$dateiname = ermittle_dateiname($_GET["id"]);
$pfad = "/irgendwas/";

if (is_file($pfad.$dateiname) && file_exists($pfad.$dateiname)) {
header("Cache-control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($pfad.$dateiname));
header("Content-Disposition: filename=". $dateiname); // hier hat ein " gefehlt

@readfile($pfad.$dateiname);

erhoehe_zaehler_um_eins($_GET["id"]);
} else {
echo "<h2>fehlermeldung</h2>";
}

Geschrieben

und was genau gibt hier an, dass das file nicht von extern verlinkt werden darf?? ich kanns nicht sehn *schäm*.

anmerkung:

bei mp3.de geht das ja über verschlüsselte (md5 o.ä.) ids die sich täglich ändern.

man kann nämlich wohl von extern auf einen song direkt verlinken wenn man diese id hat, aber eben nur einen tag lang...

Geschrieben
und was genau gibt hier an, dass das file nicht von extern verlinkt werden darf?? ich kanns nicht sehn *schäm*.

anmerkung:

bei mp3.de geht das ja über verschlüsselte (md5 o.ä.) ids die sich täglich ändern.

man kann nämlich wohl von extern auf einen song direkt verlinken wenn man diese id hat, aber eben nur einen tag lang...

Hi forTeesSake,

du kannst es nicht sehen, da es nicht da ist ;).

Der Threadsteller hat sich selbst in der aufgabenstellung wiedersprochen:

Durch dieses Verhalten...

(In der art /download.php?=id4 oder so)

schließt er automatisch die 2. Anforderung....

also das man nicht extern darauf verlinken kann

aus.

Wie du schon sagst, wäre eine täglich ändernde ID eine mögliche Lösung des Problems, aber dies würde einen höheren Aufwandt bedeuten vermute ich.

Geschrieben

man könnte jetzt natürlich in das Script noch einbauen, daß er die referer-Variable loggt (ich glaube, das war $_SERVER["REFERER"] oder so), dann weiß man evtl., woher verlinkt wurde. Ein Schritt weiter wäre, die referer-Variable daraufhin zu prüfen, ob der User von deiner Domain kommt und nur dann den download erlaubt. (Zur Erklärung: Die referer-Variable wird IMO von den meisten Browsern an den Webserver mitgegeben und beinhaltet die in diesem Browserfenster zuletzt aufgerufene Web-Adresse).

Gruß

Benjamin

Geschrieben

Wie wäre es, wenn du die ID verschlüsselst? Notwendig bsp. die Mcrypt Encryption Functions von PHP. Die ID kann z.B. mit dem aktuellen Datum veschlüsselt werden. Beim anklicken wird wieder entschlüsselt und der Download kann starten. (Einziges Problem: so gegen Mitternacht, könnten Fehler auftreten, da der Link dann veraltet ist). Ist aber eben nur ein Vorschlag. DAHER sollte die Verschlüsselung noch etwas unfangreicher gestaltet werden. Du kannst ja den Schlüssel für jeden Tag beim ersten Aufruf des Tages neu erzeugen und dann in eine DB schreiben lassen. Das wäre dann auch recht einfach mittels unique() möglich.

Ich hoffe, ich konnte dir nen kleinen Denkanstoss geben.

Geschrieben

@enrico: danke dass du meine post noch mal ausgeführt hast ;)

ich glaube aber auch, dass die "referer" sache das einfachste wäre.

WENN teil(referer) != <eigene domain/seite(n)> ODER referer == ""

DANN: nix download

Geschrieben

WENN teil(referer) != <eigene domain/seite(n)> ODER referer == ""

DANN: nix download

Vielleicht wäre es sinnvoll, auch bei leerem referer den download fortzusetzen, da wie schon gesagt wurde nicht bei jedem browser dieser mitgeliefert wird.

Geschrieben

hmm schwierig, dann lieber die andere lösung, denn ich glaube dass bei einer

weiterleitung per meta tag auch kein referer mitgeliefert wird.

dann kann man sich ne seite auf nem eigenen server basteln und per meta tag auf die download datei weiterleiten. und zack! kann man die datei problemlos runterladen weil der referer leer ist

bitte korrigier(t) mich wenn ich falsch liege

Geschrieben

Der Threadsteller hat sich selbst in der aufgabenstellung wiedersprochen:

Durch dieses Verhalten...schließt er automatisch die 2. Anforderung....

aus.

Tjoa, da her er recht :D

Jedenfalls immer noch besser, als /download/ladmichrunter.mp3 ...

Danke kLeiner_HobBes, dann werd ich das mal einzubinden versuchen.

Geschrieben

Wenn man ein wenig Lust hat zu basteln, geht auch folgende Variante zum sichern der Dateien:

Wer auf einen Download-Link klickt, wird auf eine "Zwischenseite" weitergeleitet. Hier kann man 1. Werbung unterbringen und 2. kann man hier eine Sicherung einbauen. Beim Aufruf der Zwischenseite wird ein zufälliger Code generiert und dieser in einer Datenbank mit Zeitstempel gespeichert. Ebenfalls auf dieser Zwischenseite wird der Link noch einmal wiederholt in der Form <a href="download.php?id=12&code=A3B5F1">Link</a>. Beim Aufruf der download.php wird dann überprüft, ob der code in der Datenbank drinsteht, ob der Code zu diesem MP3 gehört und ob der Code nicht älter als z.B 15 Minuten ist.

Nur mal so eine Idee... Code gibt's jetzt nicht

Geschrieben
Wenn man ein wenig Lust hat zu basteln, geht auch folgende Variante zum sichern der Dateien:

Wer auf einen Download-Link klickt, wird auf eine "Zwischenseite" weitergeleitet. Hier kann man 1. Werbung unterbringen und 2. kann man hier eine Sicherung einbauen. Beim Aufruf der Zwischenseite wird ein zufälliger Code generiert und dieser in einer Datenbank mit Zeitstempel gespeichert. Ebenfalls auf dieser Zwischenseite wird der Link noch einmal wiederholt in der Form <a href="download.php?id=12&code=A3B5F1">Link</a>. Beim Aufruf der download.php wird dann überprüft, ob der code in der Datenbank drinsteht, ob der Code zu diesem MP3 gehört und ob der Code nicht älter als z.B 15 Minuten ist.

Nur mal so eine Idee... Code gibt's jetzt nicht

Solche vorgänge ala "www.Chip.de" machen das Downloaden unkomfortabler

Geschrieben

hehe, lustich, fast das selbe habe ich vor ein paar tagen für meine firma fertiggestellt. eine nette kline statistik über den besuch von internetseiten, die auch bei kunden eingebunden werden kann (sowohl das schreiben über externes include, als natürlich auch die grafische auswertung)

was aber dein (verständnis)problem angeht kann ich dir nicht helfen. steht doch alles detailliert drin, und nen download gibts auch.

und ne frage: was hat das denn mit deinem thema zu tun? da wird ja kein download eingeschränkt (du wolltest doch einen download von extern unterbinden ja?) sondern einfach nur ne website zugriffsstatistik geschrieben...

bis denne

Geschrieben

das mit dem download von extern haben wir schonweiter oben geklärt

(dass ich doch erst eher nur den download counter brauch...)

"was aber MEIN (verständnis) problem " angeht, wurst du wahrscheinlich erst verstehen, wenn Du es, wie in meiner bitte, nachstellen würdest :D

Denn ja, es gibt ne tolle anleitung, ja, man kann die fertigen .php's sogar runterladen, aber nein, es funktioniert einfach nicht.

Und der Login auf die Admin Seite klappt schon gar nicht.

Das mag an mir leigen, kann aber auch am script leigen, daher meine bitte, ob es jemand mal testen möchte ;)

cya

Geschrieben

ich weiss ja nicht wie das skript oben aussieht, aber im Prinzip reicht doch ein symbolischer Link auf eine Datei, welcher nach einer gewissen Zeit eben wieder geloescht wird.

Dazu benoetigt ein Apache Server die Konfiguration: FollowSymlinks On oder so aehnlich. Man braeuchte dazu nicht mal eine Datenbank wenn man den Zeitstempel des Links auswertet.

IMHO die einfachste und wirksamste Loesung.

Geschrieben
Hallo,

habe eine sehr gute Lösung gefunden:

http://www.planetmattze.de/v3/scripts--9.html

Hier werden nur die Hits auf jeglichen Links gezählt, im Textfile hochgezählt.

Gutes script, in 2 MInuten aufgesetzt.

eine Lösung zu der vom Threadsteller gestellten Aufgabe,

stellt dieses Script aber nicht da.

Wenn man davon ausgehen würde, dass ich mir an die links immer den counter mitanhänge, wäre es schon problematisch, wenn mehrere benutzer zugleich auf das script zugreifen würden, und somit während des ladens der seite die counter zahlen nicht mehr stimmen würden.

so müsste man noch ein Semaphor um die ganze geschichte herumbauen, damit keine konkurrierenden Zugriffe mehr auf die Downloads möglich wären.

oder verstehe ich dich falsch und du möchtest das script in anderer art und weise nutzen?

Geschrieben

Hi,

erstma: Ich habe den threat gestartet :)

Grundsätzlich hast Du recht, exakt zeitgleiches Zugreifen auf eine Datei stellt tatsächlich ein Problem da, nur wenn die Zugriffe minimal unterschiedlich Auftreten, zählt das script natürlich hoch, und ja, der tatsächlich angezeigte counterstand wird nur beim refreshen sichbar. (da via echo "textfile inhalt ausgeben" nur die im Textfile befindliche Zahl ausgelesen wird)

Ist für mich aber durchaus ausreichend. :D

gruß,

pfc

Geschrieben
Hi,

erstma: Ich habe den threat gestartet :)

ups :)

Grundsätzlich hast Du recht, exakt zeitgleiches Zugreifen auf eine Datei stellt tatsächlich ein Problem da, nur wenn die Zugriffe minimal unterschiedlich Auftreten, zählt das script natürlich hoch, und ja, der tatsächlich angezeigte counterstand wird nur beim refreshen sichbar. (da via echo "textfile inhalt ausgeben" nur die im Textfile befindliche Zahl ausgelesen wird)

Ist für mich aber durchaus ausreichend. :D

gruß,

pfc

na dann, viel glück damit

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...