Download per header

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Download per header

    Hallo,
    ich möchte Dateien per header zum Download anbieten. Die Dateien liegen aber auf ext. Servern. Wie kann ich das anstellen?
    Da die Herkunft der Dateien nicht sichtbar sein darf um den Download zu steuern, muss das per Header geschehen.

    Gruß Andreas

  • #2
    Du meinst wohl eher Download per HTTP
    Also wenn die Daten auf einem externen Server liegen und du sie von deinem Server zum DL anbieten willst, dann brauchst du eine zentrale PHP Datei, die als DL Ziel angegeben wird. Anhand eines entsprechenden Parameters in der URL (GET-Parameter) wird dem Script mitgeteilt, welche Datei geladen werden soll. Dann baut das Script eine Vebindung zum anderen Server auf und verlangt das File. Sobald das ganze File geladen wurde gibt das Script via header() die entsprechenden Vorgaben und die Datei sollte vom Browser runtergeladen werden können.
    Das Problem ist, dass du auf dem zweiten Server ebenfalls ein solches Script brauchen wirst (wenn du den direkten DL verhindern willst), denn wenn Server 1 direkt auf die Datei bei Server 2 zugreifen kann, dann kann es auch jeder Client.
    Stellt sich also die Frage ob du die DL nicht direkt von Server 2 aus anbieten willst...

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Hallo,
      sorry, kenn mich da nicht so sehr aus. Kannst du mir noch einen Tipp geben wo ich so ein Script finden könnte?

      Andreas

      BTW, jede Datei liegt i.d.R. auf einem anderen Server.
      Es handelt sich um eine Modifikation für SMF Forum, wo man eine Datei-URL angeben kann und Berechtigte dann die Datei herunterladen ohne eben die konkrete Quelldatei zu kennen - sonst könnte die Datei beliebig heruntergeladen werden.
      Zuletzt geändert von Hondo; 05.09.2007, 10:14.

      Kommentar


      • #4
        Erstmal: Hast du Zugriff auf die anderen Server sprich kannst du dort PHP Scripte einsetzen ? Oder kannst du auf jenen Servern der Zugriff sonstwie einschränken ?

        Ein fertiges Script genau für deine Anforderung (mehrere Server) wirst du wohl kaum finden. Du wirst in jedem Falle diverse Anpassungen machen müssen. Wie das gehen könnte findest du z.B. bei http://www.php-faq.de/q/q-datei-download.html

        Bei konkreten Problemen kommst du einfach wieder

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Hallo,
          nein, hab ich nicht.
          Das Script bzw. die SMF Modifikation die ich erstelle wird ein sog. "Testzentrum für Softwaretests".
          d.h. ein "Testgeber" startet einen neuen Test indem er Angaben zur testenden Software macht und eine URL einträgt.
          User die die Software testen wollen klicken im Testbeitrag einen Button, der Testgeber erhält eine mail, wo er per klick den Tester akzeptieren oder
          ablehnen kann. Wenn akzeptiert wird der Tester eingetragen und dann soll der Download freigegeben werden.

          D.H. ich weiss jetzt noch nicht welche Server beteiligt sind, noch habe ich darauf Zugriff.
          Den Link seh ich mir jetzt aber erst mal an.

          Gruß Andreas

          Kommentar


          • #6
            Kriegst du die Testgeber dazu, dass sie dir erlauben ihren Code auf deinem Server zum DL vorzuhalten ? Ansonsten wird das wohl sehr sehr aufwändig werden...
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              nein, nicht möglich.
              der Link hat auch nichts gebracht da dieser auch davon aus geht dass der Download auf dem eigenen Server ist.
              Falls ich jetzt halt keine Lösung finde werde ich wohl einen normalen Link verwenden bzw. per header ein redirect machen. Hat leider den Nachteil dass der Speichern/Öffnen Dialog nicht kommt.

              Gruß Andreas

              Kommentar


              • #8
                Hat leider den Nachteil dass der Speichern/Öffnen Dialog nicht kommt.
                Und der User den direkten Pfad sehen kann und damit die Datei beim entfernten Server auch direkt runterladen könnte. Ausserdem hast du so auf dem entfernten Server keine Möglichkeit zu verifizieren, dass der Testgeber den Tester auch zum Testen authorisiert hat.
                Anstonsten müsstest du deine Testgeber dazu bringen ein PHP Script von dir zu installieren, das prüft ob ein Benutzer einen bestimmten Code testen darf und erst dann den DL erlaubt.
                Würde aber voraussetzen, dass entweder deine MySql DB Verbindungen von aussen erlaubt (damit der User vom entfernten Server aus verifiziert werden kann) oder du musst die Testgeber dazu bringen bei ihnen auch eine DB SW zu installieren, die dann von deinem Script (welches die Testgeber auf ihrem Server liegen haben) zwecks Authorisierung abgefragt wird.

                Das wird eine Bastelei...

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  richtig, Bastelei.
                  Aber der Downloadpfad wird nicht angezeigt, nur der Dateiname und der Domainname des Servers. Also imo OK so.

                  Gruß Andreas

                  Kommentar


                  • #10
                    Aber der Downloadpfad wird nicht angezeigt, nur der Dateiname und der Domainname des Servers. Also imo OK so.
                    Stimmt nicht denn du willst
                    Falls ich jetzt halt keine Lösung finde werde ich wohl einen normalen Link verwenden bzw. per header ein redirect machen
                    Ein header redirect an eine externe URL muss dem Browser den gesamten Pfad mitteilen (inkl Protokoll,Server, Pfad und Datei) und nach dem Redirect steht in der Browserzeile der komplette Pfad zur Datei --> also kann man auch direkt runtrladen. Gleiches gilt für einen Link.

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Hallo,
                      ja wenn ich den Link zur weiterleitenden php Datei im neuen Fenster öffne sehe ich ihn. wenn ich direkt anklicke kommt nur der Dialog. Die Seite die aufruft wird ja per redirekt wieder zurückgeleitet.

                      Andreas

                      Kommentar


                      • #12
                        Was verstehst du unter weiterleitenden php Datei ? Eine Datei auf deinem Server mit einem Redirect zum Download ? Wenn ja dann verwende mal den FF mit der LiveHeader Extension. Und siehe da da wird der komplette Pfad bekannt gegeben.
                        Mehr Sinn würde es machen wenn deine PHP Datei, den Download vom Server selber holt und dann an den Client durchreicht. Würde aber auch nicht verhindern, dass der DL direkt aufgerufen werden kann.
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          na dies:
                          PHP-Code:
                          <?php
                              header
                          ("HTTP/1.1 301 Moved Permanently");
                              
                          header("Location: $download");
                              exit;
                              
                          redirectexit('topic='.$topic.'.0');
                          ?>
                          Das seltsame ist alle Zip-Dateien werden bei mir ohne Dialog geöffnet, und bei meinem Notebook kommt der Dialog bei den gleichen Links.
                          Muss irgend eine Einstellung im Browser wohl sein.

                          Andreas

                          Kommentar


                          • #14
                            header("Location: $download");
                            Genau diese Zeile wird dafür sorgen, dass der Client die URL zum DL erhält und damit kann sie auch eingesehen werden.
                            Und was genau soll deine letzte Zeile bewirken ? Ausgeführt wird sie bestimmt nicht !

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar

                            Lädt...
                            X