Ankündigung

Einklappen
Keine Ankündigung bisher.

Download mittels readfile() funktioniert nicht zuverlässig

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von ASenna Beitrag anzeigen
    HTML-Code:
    [client 114.119.10.0] rdbmmap (24): unseredomain.de DENY on request rate
    Heißt das, dass nur eine bestimmte Zugriffsanzahl bei uns zulässig ist?
    Du darfst innerhalb einer Zeit nur gewisse Zugriffe haben, ist diese überschritten wird der Server wohl eine Weile gesperrt. Hintergrund kann auch ein versuchter Angriff von aussen sein.
    Auf Wordpress Seiten wird immer wieder versucht anzugreifen, da die Software in der Vergangenheit oft unsicher war(ob sie das immer noch ist, vermag ich nicht zu beurteilen).

    Wenn du den Header innerhalb von Wordpress verwendest wird wordpress da wohl noch einiges Zuschreiben bevor eine Ausgabe erfolgt. Das ist kein Fehler sondern bei CM-Systemen halt so üblich, da darf eben nicht einfach so im Code rumgepfuscht werden ohne sich über die Folgen im Klaren zu sein.
    Hilfreich ist immer das Lesen der Dokumentation und das Nachfragen in den Fachforen zu der Software.

    Hier wirst du nur Hilfe zu PHP erhalten, also der Rohform der Software von Wordpress, wie das im Zusammenspiel dann am Ende ausschaut entzieht sich unsere Kenntnis.

    Kommentar


    • #17
      Zitat von erc Beitrag anzeigen
      Ist das ein neues Fehlerbild? Oben schreibst du die Datei wurde abgehakt. Jetzt steht in der Datei HTML Code!?
      Ja, das ist ein neues Fehlerbild. Es kann aber natürlich auch damit zusammenhängen, dass ich beim Code immer mal wieder das eine oder andere probieren.

      gestern kam nun zufällig jemand vorbei, der auch was von PHP versteht. Der sagte, das löschen und senden des Buffers sei falsch gesetzt. So müsse es heißen:

      PHP-Code:
      ob_clean();
      header('Content-Type: ' $mimetype);
      header('Content-Disposition: attachment; filename="' basename($downloaddatei) . '"');
      readfile($ordner $downloaddatei);
      ob_end_flush(); 
      Und siehe da, es funktioniert ... zumindest zwei Testläufe. Ich werde das am WoE mal genauer ausprobieren.

      Kommentar


      • #18
        @protestix: Danke für den Hinweis. Deshalb sind solche Foren für mich sehr hilfreich. Auf die Idee, dass mir WordPress da reinfuscht, wäre ich nicht gekommen. Ich dachte, wenn ich eigenen PHP-Code ausführe, lässt mich WordPress in Ruhe.

        Kommentar


        • #19
          Das ist aber auch nur eine Pfuschlösung. Wordpress sollte erst gar keine Ausgabe starten, die dann nachträglich gelöscht werden muss.

          Ich selber hab von Wordpress leider überhaupt keine Ahnung, aber eine Lösung die ich mit Google gefunden habe wäre, seinen Code als Action vor die Ausgabe von Wordpress zu hängen:

          https://stackoverflow.com/a/26507507

          Keine Ahnung, ob das die richtige Lösung ist, weil ich mangels Kenntnisse über Wordpress das nicht beurteilen kann, aber es wirkt von meinem Programmiergefühl her nicht mal ansatzweise so falsch wie das Rumgemurkse mit dem Output Buffer.

          Aber ich frage mich, warum du nicht gleich in einem Wordpress-Forum schreibst? Weil mit PHP selber hat das Problem ja an sich nur am Rande zu tun.

          Kommentar


          • #20
            Der Knackpunkt ist das "die()" am Ende...

            Von daher...
            Irgendwo habe ich gelesen, dass man nach readfile() mit exit aus der Funktion aussteigen soll, weil dahinter nichts mehr stehen darf.
            .. stimmt das - der Download ist 1 HTTP Request und darf auch nur die Daten enthalten, die angefragt werden.

            In einem Framework kann es sein, daß du einen Request nur mittelbar bekommst (weil das Framework "vor" dir sitzt) und auch nur mittelbar beantworten kannst (weil das Framework auch "hinter" dir sitzt).
            Ein gutes Framework wird "vor" dir, ausser vielleicht ein paar headern, hoffentlich noch keine Ausgabe gemacht haben... was aber hinter dir noch passiert, ist transparent für dich.

            Ein "exit" oder "die" nach der Ausgabe unterbindet dies, ist aber eventuell nicht ganz ohne Konsequenzen, denn damit untergräbt man ggfs. das Framework und kann sich dort Seiteneffekte einhandeln (kann... muss nicht)

            Ganz nüchtern betrachtet gilt, was für jeden HTTP request gilt: 1 Eingabe = 1 Ausgabe. Resourcen "mixen" funktioniert nicht, dabei kommt nur Müll raus.

            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #21
              Ein mal gegoogelt und der erste Link ist
              https://www.sven-hoerig.de/ratgeber/...load-anbieten/

              Kommentar


              • #22
                Zitat von hellbringer Beitrag anzeigen
                Aber ich frage mich, warum du nicht gleich in einem Wordpress-Forum schreibst? Weil mit PHP selber hat das Problem ja an sich nur am Rande zu tun.
                Wie ich in #18 geschrieben habe: Erst durch diese Diskussion hier ist mir klar geworden, dass es gerade eben nicht an readfile() / PHP liegt. Euch mag das alles klar und logisch erscheinen, aber mir, der ich auf der Schule 2 Jahre Informatik-Unterricht alle 14 Tage hatte (war halt vor 35 Jahren so), ansonsten aber eine geisteswissenschaftliche Ausbildung habe, eben nicht. Deswegen verstehe ich manche etwas rüden Kommentare auch nicht so richtig. Das ist hier schließlich ein Einsteiger-Forum.

                Kommentar


                • #23
                  Zitat von protestix Beitrag anzeigen
                  Ein mal gegoogelt und der erste Link ist
                  Die Lösung ist leider zu statisch. Abhängig von einem zuvor eingegebenen Kennwort werden höchst selektiv Downloads angeboten.

                  Kommentar

                  Lädt...
                  X