Webdesign in Siegen

Downloads - Punkte

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Downloads - Punkte

Beitragvon =Max= am 12.08.2008, 20:20

Hallo community,

auf meiner Seite möchte ich Scripte kostenlos zum Download anbieten. lediglich Punkte (die sie durch einzelne Spiele bekommen) müssen die User inlösen um es downloaden zu können. Jetzt ist meine Frage, da man ja den Downloadlink zur datei wohl kaum geheimhalten kann:

Wie mache ich es das eine Datei nur gedownloadet wird, wenn man auf den Button klickt, abernicht wenn man die Datei direkt aufruft.

Gibt es denn andere sinnvollere Varianten, hauptsache er kommt nicht einfach so an die Datei?
=Max=
Mitglied
 
Beiträge: 444
Registriert: 14.01.2007, 18:59

Re: Downloads - Punkte

Beitragvon nicolas.mn am 12.08.2008, 23:08

Ich glaube es gibt "versteckte" Links, also Links die nicht oben in der Adresszeile angezeigt werden und somit geheim bleiben, musse mal Googlen.
Du willst sehen was ich kann? Schau's dir an! // MacBook 2,4 GHz Dualcore, 4 GB Ram, 230 GB Festplatte.
Benutzeravatar
nicolas.mn
Mitglied
 
Beiträge: 433
Registriert: 10.06.2007, 18:02
Wohnort: Krefeld

Re: Downloads - Punkte

Beitragvon =Max= am 13.08.2008, 07:45

Hab ne Weile gesucht bin auf htaccess gestoßen habe aber nicht das gefunden was ich möchte.
=Max=
Mitglied
 
Beiträge: 444
Registriert: 14.01.2007, 18:59

Re: Downloads - Punkte

Beitragvon Manuel am 13.08.2008, 11:48

Ne, htaccess ist in diesem Fall die falsche Lösung. Damit verschleierst du zwar die URL, dennoch ist diese aber noch von jedem aufrufbar.

Ein Lösungsansatz ist beispielsweise, mit PHP die Rechte des Users abzufragen und dann den Download freizugeben.

Ein Beispiel:
Code: Alles auswählen
    header('HTTP/1.1 200 OK');
    header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header('Content-Description: File Transfer');
    header('Content-Type: application/x-rar-compressed');
    header('Content-Disposition: attachment; filename='.$file.$ext);
    header('Content-Length: '.$filesize);
    readfile($dlpath.$file.$ext);


Erklärung:
Als Header gibst du den Typ der Datei an, den Namen, die Größe und anschließend liest du die Datei mit readfile. Dieses Beispiel bezieht sich auf rar-Dateien. Natürlich sind auch andere Dateiformate möglich.

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Re: Downloads - Punkte

Beitragvon powerschulzi am 13.08.2008, 16:28

Oder du machst das ganze über ein LogIn-System mit Userdatenbank. Der Nachteil dabei ist allerdings, dass sich User erst registrieren müssen o.Ä... Weiß ja nicht ob du das möchtest
Benutzeravatar
powerschulzi
Mitglied
 
Beiträge: 1280
Registriert: 18.09.2005, 16:07
Wohnort: Dresden

Re: Downloads - Punkte

Beitragvon Manuel am 13.08.2008, 20:15

Ich glaube auch das wird nicht helfen, denn dann loggt sich wer dort ein und kann den Link an alle weitergeben. Ich glaube aber es geht eher darum, dass das eben nicht passiert und dass genau nur dieser User Zugriff darauf hat aber niemand anderes, egal ob durch einen externen Link oder nicht.

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Re: Downloads - Punkte

Beitragvon powerschulzi am 14.08.2008, 19:00

Ich hatte eher sowas wie eine boolsche Spalte "EnableDownload" im sql und login-abfrage im Download-Script im Sinn ;)
Evtl. mit Weiterleitung per Header und sowas, damits nicht im Hypertext angezeigt wird.
Ich denk, damit kann man sowas relativ effektiv verstecken.
Benutzeravatar
powerschulzi
Mitglied
 
Beiträge: 1280
Registriert: 18.09.2005, 16:07
Wohnort: Dresden

Re: Downloads - Punkte

Beitragvon Manuel am 14.08.2008, 20:38

Aber bei einer Weiterleitung bekommt man dann doch wieder die URL angezeigt und kann die dann verwenden oder nicht? ;)
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Re: Downloads - Punkte

Beitragvon veNom am 14.08.2008, 22:27

Ich bin zwar jetzt nicht so der Experte, aber ich würde das mit temporären Daten versuchen und Schlüsseln wie bei der Übergabe von Formularen, die den User eben einen zeitbeschränkten Zugriff erlauben.
All you get is all you need
Benutzeravatar
veNom
Mitglied
 
Beiträge: 1660
Registriert: 29.12.2005, 23:31
Wohnort: Wien

Re: Downloads - Punkte

Beitragvon Eyecatcher am 15.08.2008, 00:15

Ne Manuel liegt schon richtig!
Du gibst der Datei einen verschlüsselten Namen, und rufst ein PHP-Skript auf, in welchem der Name gespeichert ist (gerne auch aus einer Datenbank). Per Header gibts du die Datei dann aus, und kannst sogar noch ihren Namen verändern. PHP-Manual sagt dazu folgendes:
Code: Alles auswählen
<?php
// Wir werden eine PDF Datei ausgeben
header('Content-type: application/pdf');

// Es wird downloaded.pdf benannt
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// Die originale PDF Datei heißt original.pdf
readfile('original.pdf');
?>
Benutzeravatar
Eyecatcher
Mitglied
 
Beiträge: 421
Registriert: 01.03.2008, 21:56
Wohnort: NRW


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast