PHP Downloadskript: Wie Dateien behandeln?



  • Hallo,

    ich würd den Weg über die Datenbank gehen. Das ist bei vielen Dateien sicherlich effektiver und sorgt vor allem für mehr Ordnung. Du kannst dann jeder Datei eine ID zuweisen und anhand der ID schauen welche Datei gezogen werden soll. Der Aufwand mit der Datenbank lässt sich mit einem kleinen Upload-Script extrem veringern.

    LG, Micha



  • Hm ja beim so drüber Nachdenken ist das wohl die bessere Entscheidung, zumal User sich einloggen sollen um zu downloaden.
    Hierbei bin ich mir nun bei der Umsetzung nicht ganz schlüssig:
    Wenn ich den Daten eine feste ID zuordne kann man diese, sofern man die ID auswendig kennt direkt downloaden, andererseits sind temporäre ID's etwas sicherer. Nun bin ich mir nicht sicher was davon intelligenter wäre 🙂
    Also:
    Pro für feste ID's: -wenig Rechenlast, User muss sich eh einloggen, man kann Dateien direkt auswählen
    Pro für temporäre ID's: -User kann nur wenig Rückschlüsse auf den Serveraufbau nehmen, ich muss die Dateien nicht sortieren (also welche ID = 1, ID = 2 usw.)



  • Du kannst es doch so einrichten, dass die ID alleine nicht ausreicht, um die Datei zu downloaden, sondern man eben eingeloggt sein muss. Kannst Du ja kontrollieren, ob ein bestimmtes Cookie gesetzt ist, oder beim Downloadlink übergebene Session-ID noch gültig ist?!


  • Mod

    Warum willst du den pfad zur Datei denn verstecken?



  • WO liegt das Problem. Sende sie doch mit Header.



  • Also Wege wie man das implementieren kann wurden ja schon zu Hauf jetzt genannt und da sehe ich auch weniger das Problem, sondern eher was sinnvoller/besser ist.
    Warum ich die verstecken will: Wie gesagt,die Daten gehören auch zum lokalen Server und ich möchte schlichtweg nicht, dass jeder sieht wo was auf meinen Festplatten liegt usw.
    Zur Verdeutlichung nochmal ein Beispiel:
    Datei1 hat immer die ID = 11111, sodass www.meinserver.de/download.php?id?11111
    Bei einer temporären ID (z.B. aus Session_ID gebaut) sieht das dann beim ersten Mal vllt. so aus: www.meinserver.de/download.php?id?11111 und beim Zweiten Mal so:
    www.meinserver.de/download.php?id?22222 für ein und dieselbe Datei


  • Mod

    Wie genau wählt man denn die Datei aus die man runterladen will? Da muss ich mich doch eh durch Ordner navigieren, oder?



  • Bei temporären IDs?
    Jeder User bekommt eine ID zugewiesen und jede Datei hat eine feste ID. Daraus könnte ich z.B. eine neue ID bauen, die per GET oder so übertragen und am Ende wieder auseinander nehmen. Muss nur der entsprechende Algo da sein.
    Aber da gibts bestimmt elegantere Lösungen für - die kam mir spontan, aber so dolle finde ich die nun nicht.
    Ich tendiere gerade eher zur festen ID, nur da wüsste ich nicht wie ich sortieren soll 😃

    Edit: Wie läuft das denn auf so größeren Seiten wie z.B. Chip ab? Da habe ich z.B. als Downloadlink sowas: http://dl23.chip.de/download/cbcbb7464e9c973bce281aa41ce44b79/49c127bf/3803430/NameDerDatei



  • Pille456 schrieb:

    wie läuft das denn auf so größeren Seiten wie z.B. Chip ab? Da habe ich z.B. als Downloadlink sowas: http://dl23.chip.de/download/cbcbb7464e9c973bce281aa41ce44b79/49c127bf/3803430/NameDerDatei

    wie genau das da gemacht wird, kann ich nicht sagen, aber wenn man wirklich Sicherheit will, kann man auc "Tickets" verteilen:
    Bei der Downloadanfrage wird die eigentliche Datei-Id zusammen mit einer gerade zufällig erstellten (oder zumindest einmaligen) Id, der User-Id und einem Zeitstempel in der Datenbank abgelegt. Das Skript, dass die Datei dann rausschickt löscht erstmal alle alten Tickets aus der DB und sieht dann nach, ob die übermittelte ID noch drinsteht. Wenn ja, kann sie anhand der Datei-Id die Datei rausschicken. Wenn nicht, dann gibts eben eine Fehlermeldung.


  • Mod

    Pille456 schrieb:

    Bei temporären IDs?

    Nein, vom user interface her.
    Ich komme auf deine Seite und wo klicke ich dann um eine datei runter zuladen.

    mich würde nämlich interessieren wie du hier die ordner struktur verstecken willst.


Anmelden zum Antworten